diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 35393ac..11972ee 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -250,8 +250,11 @@
             settings.setUserAgentString(USER_AGENTS[getUserAgent()]);
         }
 
-        settings.setProperty("gfxInvertedScreen",
+        settings.setProperty(PREF_INVERTED,
                 useInvertedRendering() ? "true" : "false");
+
+        settings.setProperty(PREF_INVERTED_CONTRAST,
+                Float.toString(getInvertedContrast()));
     }
 
     /**
@@ -735,6 +738,14 @@
         return mPrefs.getBoolean(PREF_INVERTED, false);
     }
 
+    public float getInvertedContrast() {
+        return 1 + (mPrefs.getInt(PREF_INVERTED_CONTRAST, 0) / 10f);
+    }
+
+    public void setInvertedContrast(int contrast) {
+        mPrefs.edit().putInt(PREF_INVERTED_CONTRAST, contrast).apply();
+    }
+
     // -----------------------------
     // getter/setters for privacy_security_preferences.xml
     // -----------------------------
diff --git a/src/com/android/browser/PreferenceKeys.java b/src/com/android/browser/PreferenceKeys.java
index 65218e5..1bfe389 100644
--- a/src/com/android/browser/PreferenceKeys.java
+++ b/src/com/android/browser/PreferenceKeys.java
@@ -28,6 +28,8 @@
     static final String PREF_TEXT_SIZE = "text_size";
     static final String PREF_TEXT_ZOOM = "text_zoom";
     static final String PREF_FORCE_USERSCALABLE = "force_userscalable";
+    static final String PREF_INVERTED = "inverted";
+    static final String PREF_INVERTED_CONTRAST = "inverted_contrast";
 
     // ----------------------
     // Keys for advanced_preferences.xml
@@ -79,7 +81,6 @@
     static final String PREF_ENABLE_QUICK_CONTROLS = "enable_quick_controls";
     static final String PREF_USE_INSTANT_SEARCH = "use_instant_search";
     static final String PREF_FULLSCREEN = "fullscreen";
-    static final String PREF_INVERTED = "inverted";
 
     // ----------------------
     // Keys for privacy_security_preferences.xml
diff --git a/src/com/android/browser/preferences/AccessibilityPreferencesFragment.java b/src/com/android/browser/preferences/AccessibilityPreferencesFragment.java
index b7d06a1..312a61e 100644
--- a/src/com/android/browser/preferences/AccessibilityPreferencesFragment.java
+++ b/src/com/android/browser/preferences/AccessibilityPreferencesFragment.java
@@ -45,6 +45,9 @@
         e = findPreference(PreferenceKeys.PREF_TEXT_ZOOM);
         e.setOnPreferenceChangeListener(this);
         updateTextZoomSummary(e, settings.getTextZoom());
+        e = findPreference(PreferenceKeys.PREF_INVERTED_CONTRAST);
+        e.setOnPreferenceChangeListener(this);
+        updateInvertedContrastSummary(e, (int) (settings.getInvertedContrast() * 100));
     }
 
     void updateMinFontSummary(Preference pref, int minFontSize) {
@@ -56,6 +59,10 @@
         pref.setSummary(mFormat.format(textZoom / 100.0));
     }
 
+    void updateInvertedContrastSummary(Preference pref, int contrast) {
+        pref.setSummary(mFormat.format(contrast / 100.0));
+    }
+
     @Override
     public boolean onPreferenceChange(Preference pref, Object objValue) {
         if (getActivity() == null) {
@@ -72,7 +79,11 @@
             updateTextZoomSummary(pref, BrowserSettings
                     .getAdjustedTextZoom((Integer) objValue));
         }
+        if (PreferenceKeys.PREF_INVERTED_CONTRAST.equals(pref.getKey())) {
+            updateInvertedContrastSummary(pref,
+                    (int) ((10 + (Integer) objValue) * 10));
+        }
         return true;
     }
 
-}
\ No newline at end of file
+}
diff --git a/src/com/android/browser/preferences/WebViewPreview.java b/src/com/android/browser/preferences/WebViewPreview.java
index 1886bed..27c4f00 100644
--- a/src/com/android/browser/preferences/WebViewPreview.java
+++ b/src/com/android/browser/preferences/WebViewPreview.java
@@ -17,6 +17,7 @@
 package com.android.browser.preferences;
 
 import com.android.browser.BrowserSettings;
+import com.android.browser.PreferenceKeys;
 import com.android.browser.R;
 
 import android.content.Context;
@@ -68,6 +69,7 @@
         BrowserSettings bs = BrowserSettings.getInstance();
         ws.setMinimumFontSize(bs.getMinimumFontSize());
         ws.setTextZoom(bs.getTextZoom());
+        ws.setProperty(PreferenceKeys.PREF_INVERTED_CONTRAST, Float.toString(bs.getInvertedContrast()));
         mWebView.loadData(mHtml, "text/html", "utf-8");
     }
 
