diff --git a/res/layout/storage_summary_donut.xml b/res/layout/storage_summary_donut.xml
index 585fbf4..eb26077 100644
--- a/res/layout/storage_summary_donut.xml
+++ b/res/layout/storage_summary_donut.xml
@@ -17,7 +17,7 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:background="?android:attr/selectableItemBackground"
+    android:background="?android:attr/colorSecondary"
     android:gravity="center_vertical"
     android:orientation="horizontal" >
 
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 4a09594..ef85925 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -104,9 +104,6 @@
 
     <color name="status_bar_color">#3c3c3c</color>
 
-    <!-- Color for the background of the donut graph.-->
-    <color name="donut_background_grey">#ffd7d7d7</color>
-
     <!-- Color for the background of the shortcut icons.-->
     <color name="shortcut_background">#fff5f5f5</color>
 
diff --git a/src/com/android/settings/fuelgauge/BatteryMeterView.java b/src/com/android/settings/fuelgauge/BatteryMeterView.java
index c450b90..b9ed1e4 100644
--- a/src/com/android/settings/fuelgauge/BatteryMeterView.java
+++ b/src/com/android/settings/fuelgauge/BatteryMeterView.java
@@ -49,7 +49,7 @@
     public BatteryMeterView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
         super(context, attrs, defStyleAttr);
 
-        final int frameColor = context.getColor(R.color.batterymeter_frame_color);
+        final int frameColor = context.getColor(R.color.meter_background_color);
         mAccentColorFilter = new PorterDuffColorFilter(
                 Utils.getColorAttr(context, android.R.attr.colorAccent), PorterDuff.Mode.SRC_IN);
         mErrorColorFilter = new PorterDuffColorFilter(
diff --git a/src/com/android/settings/widget/DonutView.java b/src/com/android/settings/widget/DonutView.java
index 0feaa07..7a13a0e 100644
--- a/src/com/android/settings/widget/DonutView.java
+++ b/src/com/android/settings/widget/DonutView.java
@@ -17,12 +17,14 @@
 
 import android.content.Context;
 import android.graphics.Canvas;
+import android.graphics.ColorFilter;
 import android.graphics.Paint;
+import android.graphics.PorterDuff;
+import android.graphics.PorterDuffColorFilter;
 import android.text.TextPaint;
 import android.util.AttributeSet;
 import android.view.View;
 
-import com.android.internal.util.Preconditions;
 import com.android.settings.R;
 import com.android.settings.Utils;
 
@@ -50,20 +52,26 @@
         super(context, attrs);
         mDeviceDensity = getResources().getDisplayMetrics().density;
         mStrokeWidth = 6f * mDeviceDensity;
+        final ColorFilter mAccentColorFilter =
+                new PorterDuffColorFilter(
+                        Utils.getColorAttr(context, android.R.attr.colorAccent),
+                        PorterDuff.Mode.SRC_IN);
 
         mBackgroundCircle = new Paint();
         mBackgroundCircle.setAntiAlias(true);
         mBackgroundCircle.setStrokeCap(Paint.Cap.BUTT);
         mBackgroundCircle.setStyle(Paint.Style.STROKE);
         mBackgroundCircle.setStrokeWidth(mStrokeWidth);
-        mBackgroundCircle.setColor(getResources().getColor(R.color.donut_background_grey));
+        mBackgroundCircle.setColorFilter(mAccentColorFilter);
+        mBackgroundCircle.setColor(context.getColor(R.color.meter_background_color));
 
         mFilledArc = new Paint();
         mFilledArc.setAntiAlias(true);
         mFilledArc.setStrokeCap(Paint.Cap.BUTT);
         mFilledArc.setStyle(Paint.Style.STROKE);
         mFilledArc.setStrokeWidth(mStrokeWidth);
-        mFilledArc.setColor(Utils.getColorAccent(getContext()));
+        mFilledArc.setColor(Utils.getDefaultColor(mContext, R.color.meter_consumed_color));
+        mFilledArc.setColorFilter(mAccentColorFilter);
 
         mTextPaint = new TextPaint();
         mTextPaint.setColor(Utils.getColorAccent(getContext()));
@@ -86,11 +94,25 @@
     }
 
     private void drawDonut(Canvas canvas) {
-        canvas.drawArc(0 + mStrokeWidth, 0 + mStrokeWidth, getWidth() - mStrokeWidth,
-                getHeight() - mStrokeWidth, TOP, 360, false, mBackgroundCircle);
+        canvas.drawArc(
+                0 + mStrokeWidth,
+                0 + mStrokeWidth,
+                getWidth() - mStrokeWidth,
+                getHeight() - mStrokeWidth,
+                TOP,
+                360,
+                false,
+                mBackgroundCircle);
 
-        canvas.drawArc(0 + mStrokeWidth, 0 + mStrokeWidth, getWidth() - mStrokeWidth,
-                getHeight() - mStrokeWidth, TOP, (360 * mPercent / 100), false, mFilledArc);
+        canvas.drawArc(
+                0 + mStrokeWidth,
+                0 + mStrokeWidth,
+                getWidth() - mStrokeWidth,
+                getHeight() - mStrokeWidth,
+                TOP,
+                (360 * mPercent / 100),
+                false,
+                mFilledArc);
     }
 
     private void drawInnerText(Canvas canvas) {
