diff --git a/src/com/android/settings/SummaryPreference.java b/src/com/android/settings/SummaryPreference.java
index 0943a2b..38449b1 100644
--- a/src/com/android/settings/SummaryPreference.java
+++ b/src/com/android/settings/SummaryPreference.java
@@ -33,6 +33,7 @@
     private String mUnits;
 
     private int mLeft, mMiddle, mRight;
+    private boolean mColorsSet = false;
     private float mLeftRatio, mMiddleRatio, mRightRatio;
     private String mStartLabel;
     private String mEndLabel;
@@ -40,8 +41,6 @@
     public SummaryPreference(Context context, AttributeSet attrs) {
         super(context, attrs);
         setLayoutResource(R.layout.settings_summary_preference);
-        mLeft = context.getColor(R.color.summary_default_start);
-        mRight = context.getColor(R.color.summary_default_end);
     }
 
     public void setAmount(String amount) {
@@ -77,6 +76,7 @@
         mLeft = left;
         mMiddle = middle;
         mRight = right;
+        mColorsSet = true;
         notifyChanged();
     }
 
@@ -86,7 +86,9 @@
 
         LinearColorBar colorBar = (LinearColorBar) holder.itemView.findViewById(R.id.color_bar);
         colorBar.setRatios(mLeftRatio, mMiddleRatio, mRightRatio);
-        colorBar.setColors(mLeft, mMiddle, mRight);
+        if (mColorsSet) {
+            colorBar.setColors(mLeft, mMiddle, mRight);
+        }
 
         if (!TextUtils.isEmpty(mStartLabel) || !TextUtils.isEmpty(mEndLabel)) {
             holder.findViewById(R.id.label_bar).setVisibility(View.VISIBLE);
diff --git a/src/com/android/settings/applications/LinearColorBar.java b/src/com/android/settings/applications/LinearColorBar.java
index 158a625..53b6ab6 100644
--- a/src/com/android/settings/applications/LinearColorBar.java
+++ b/src/com/android/settings/applications/LinearColorBar.java
@@ -4,6 +4,7 @@
 package com.android.settings.applications;
 
 import android.content.Context;
+import android.content.res.Resources;
 import android.graphics.Canvas;
 import android.graphics.LinearGradient;
 import android.graphics.Paint;
@@ -12,12 +13,12 @@
 import android.graphics.Shader;
 import android.util.AttributeSet;
 import android.util.DisplayMetrics;
+import android.util.TypedValue;
 import android.view.MotionEvent;
 import android.widget.LinearLayout;
 
 public class LinearColorBar extends LinearLayout {
-    static final int LEFT_COLOR = 0xff009688;
-    static final int MIDDLE_COLOR = 0xff009688;
+
     static final int RIGHT_COLOR = 0xffced7db;
     static final int GRAY_COLOR = 0xff555555;
     static final int WHITE_COLOR = 0xffffffff;
@@ -26,8 +27,8 @@
     private float mYellowRatio;
     private float mGreenRatio;
 
-    private int mLeftColor = LEFT_COLOR;
-    private int mMiddleColor = MIDDLE_COLOR;
+    private int mLeftColor;
+    private int mMiddleColor;
     private int mRightColor = RIGHT_COLOR;
 
     private boolean mShowIndicator = true;
@@ -70,7 +71,11 @@
                 ? 2 : 1;
         mEdgeGradientPaint.setStrokeWidth(mLineWidth);
         mEdgeGradientPaint.setAntiAlias(true);
-        
+
+        Resources.Theme theme = context.getTheme();
+        TypedValue typedValue = new TypedValue();
+        theme.resolveAttribute(android.R.attr.colorAccent, typedValue, true);
+        mLeftColor = mMiddleColor = context.getColor(typedValue.resourceId);
     }
 
     public void setOnRegionTappedListener(OnRegionTappedListener listener) {
