diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 6928b2c..e4a8978 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -12872,7 +12872,7 @@
                         Interpolator.Result.FREEZE_END) {
                     cache.state = ScrollabilityCache.OFF;
                 } else {
-                    cache.scrollBar.setAlpha(Math.round(values[0]));
+                    cache.scrollBar.mutate().setAlpha(Math.round(values[0]));
                 }
 
                 // This will make the scroll bars inval themselves after
@@ -12882,7 +12882,7 @@
             } else {
                 // We're just on -- but we may have been fading before so
                 // reset alpha
-                cache.scrollBar.setAlpha(255);
+                cache.scrollBar.mutate().setAlpha(255);
             }
 
 
diff --git a/core/java/android/widget/ScrollBarDrawable.java b/core/java/android/widget/ScrollBarDrawable.java
index 10e9ff4..8eff1aa 100644
--- a/core/java/android/widget/ScrollBarDrawable.java
+++ b/core/java/android/widget/ScrollBarDrawable.java
@@ -44,6 +44,7 @@
     private final Rect mTempBounds = new Rect();
     private boolean mAlwaysDrawHorizontalTrack;
     private boolean mAlwaysDrawVerticalTrack;
+    private boolean mMutated;
 
     public ScrollBarDrawable() {
     }
@@ -191,6 +192,9 @@
 
     public void setVerticalThumbDrawable(Drawable thumb) {
         if (thumb != null) {
+            if (mMutated) {
+                thumb.mutate();
+            }
             thumb.setState(STATE_ENABLED);
             mVerticalThumb = thumb;
         }
@@ -198,6 +202,9 @@
 
     public void setVerticalTrackDrawable(Drawable track) {
         if (track != null) {
+            if (mMutated) {
+                track.mutate();
+            }
             track.setState(STATE_ENABLED);
         }
         mVerticalTrack = track;
@@ -205,6 +212,9 @@
 
     public void setHorizontalThumbDrawable(Drawable thumb) {
         if (thumb != null) {
+            if (mMutated) {
+                thumb.mutate();
+            }
             thumb.setState(STATE_ENABLED);
             mHorizontalThumb = thumb;
         }
@@ -212,6 +222,9 @@
 
     public void setHorizontalTrackDrawable(Drawable track) {
         if (track != null) {
+            if (mMutated) {
+                track.mutate();
+            }
             track.setState(STATE_ENABLED);
         }
         mHorizontalTrack = track;
@@ -228,6 +241,26 @@
     }
 
     @Override
+    public ScrollBarDrawable mutate() {
+        if (!mMutated && super.mutate() == this) {
+            if (mVerticalTrack != null) {
+                mVerticalTrack.mutate();
+            }
+            if (mVerticalThumb != null) {
+                mVerticalThumb.mutate();
+            }
+            if (mHorizontalTrack != null) {
+                mHorizontalTrack.mutate();
+            }
+            if (mHorizontalThumb != null) {
+                mHorizontalThumb.mutate();
+            }
+            mMutated = true;
+        }
+        return this;
+    }
+
+    @Override
     public void setAlpha(int alpha) {
         if (mVerticalTrack != null) {
             mVerticalTrack.setAlpha(alpha);
