diff --git a/res/values/strings.xml b/res/values/strings.xml
index 97c0726..53923a3 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -3879,6 +3879,11 @@
     <!-- UI debug setting: show hardware layers updates summary [CHAR LIMIT=50] -->
     <string name="show_hw_layers_updates_summary">Flash hardware layers green when they update</string>
 
+    <!-- UI debug setting: show the amount of overdraw in apps using the GPU [CHAR LIMIT=25] -->
+    <string name="show_hw_overdraw">Show GPU overdraw</string>
+    <!-- UI debug setting: Show the amount of overdraw summary [CHAR LIMIT=50] -->
+    <string name="show_hw_overdraw_summary">From best to worst: blue, green, light red, red</string>
+
     <!-- UI debug setting: disable use of overlays? [CHAR LIMIT=25] -->
     <string name="disable_overlays">Disable HW overlays</string>
     <!-- UI debug setting: disable use of overlays summary [CHAR LIMIT=50] -->
diff --git a/res/xml/development_prefs.xml b/res/xml/development_prefs.xml
index 575f802..6a3e82b 100644
--- a/res/xml/development_prefs.xml
+++ b/res/xml/development_prefs.xml
@@ -111,6 +111,11 @@
             android:summary="@string/show_hw_layers_updates_summary"/>
 
         <CheckBoxPreference
+            android:key="show_hw_overdraw"
+            android:title="@string/show_hw_overdraw"
+            android:summary="@string/show_hw_overdraw_summary"/>
+
+        <CheckBoxPreference
             android:key="show_screen_updates"
             android:title="@string/show_screen_updates"
             android:summary="@string/show_screen_updates_summary"/>
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index f590ea6..159dd09 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -93,6 +93,7 @@
     private static final String TRACK_FRAME_TIME_KEY = "track_frame_time";
     private static final String SHOW_HW_SCREEN_UPDATES_KEY = "show_hw_screen_udpates";
     private static final String SHOW_HW_LAYERS_UPDATES_KEY = "show_hw_layers_udpates";
+    private static final String SHOW_HW_OVERDRAW_KEY = "show_hw_overdraw";
     private static final String DEBUG_LAYOUT_KEY = "debug_layout";
     private static final String WINDOW_ANIMATION_SCALE_KEY = "window_animation_scale";
     private static final String TRANSITION_ANIMATION_SCALE_KEY = "transition_animation_scale";
@@ -143,6 +144,7 @@
     private CheckBoxPreference mTrackFrameTime;
     private CheckBoxPreference mShowHwScreenUpdates;
     private CheckBoxPreference mShowHwLayersUpdates;
+    private CheckBoxPreference mShowHwOverdraw;
     private CheckBoxPreference mDebugLayout;
     private CheckBoxPreference mDisplayMangificationAutoUpdate;
     private ListPreference mWindowAnimationScale;
@@ -199,6 +201,7 @@
         mTrackFrameTime = findAndInitCheckboxPref(TRACK_FRAME_TIME_KEY);
         mShowHwScreenUpdates = findAndInitCheckboxPref(SHOW_HW_SCREEN_UPDATES_KEY);
         mShowHwLayersUpdates = findAndInitCheckboxPref(SHOW_HW_LAYERS_UPDATES_KEY);
+        mShowHwOverdraw = findAndInitCheckboxPref(SHOW_HW_OVERDRAW_KEY);
         mDebugLayout = findAndInitCheckboxPref(DEBUG_LAYOUT_KEY);
         mWindowAnimationScale = (ListPreference) findPreference(WINDOW_ANIMATION_SCALE_KEY);
         mAllPrefs.add(mWindowAnimationScale);
@@ -369,6 +372,7 @@
         updateTrackFrameTimeOptions();
         updateShowHwScreenUpdatesOptions();
         updateShowHwLayersUpdatesOptions();
+        updateShowHwOverdrawOptions();
         updateDebugLayoutOptions();
         updateAnimationScaleOptions();
         updateOverlayDisplayDevicesOptions();
@@ -619,6 +623,17 @@
         pokeSystemProperties();
     }
 
+    private void updateShowHwOverdrawOptions() {
+        updateCheckBox(mShowHwOverdraw, SystemProperties.getBoolean(
+                HardwareRenderer.DEBUG_SHOW_OVERDRAW_PROPERTY, false));
+    }
+
+    private void writeShowHwOverdrawOptions() {
+        SystemProperties.set(HardwareRenderer.DEBUG_SHOW_OVERDRAW_PROPERTY,
+                mShowHwOverdraw.isChecked() ? "true" : null);
+        pokeSystemProperties();
+    }
+
     private void updateDebugLayoutOptions() {
         updateCheckBox(mDebugLayout,
                 SystemProperties.getBoolean(View.DEBUG_LAYOUT_PROPERTY, false));
@@ -926,6 +941,8 @@
             writeShowHwScreenUpdatesOptions();
         } else if (preference == mShowHwLayersUpdates) {
             writeShowHwLayersUpdatesOptions();
+        } else if (preference == mShowHwOverdraw) {
+            writeShowHwOverdrawOptions();
         } else if (preference == mDebugLayout) {
             writeDebugLayoutOptions();
         } else if (preference == mDisplayMangificationAutoUpdate) {
