diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java
index e5fe7bd..e9c22ff 100644
--- a/src/com/android/launcher2/AppsCustomizePagedView.java
+++ b/src/com/android/launcher2/AppsCustomizePagedView.java
@@ -419,7 +419,6 @@
             mCanvas.save();
             preview.draw(mCanvas);
             mCanvas.restore();
-            mCanvas.setBitmap(null);
             createItemInfo.spanX = createItemInfo.spanY = 1;
         }
 
@@ -700,7 +699,6 @@
                         c.save();
                         c.drawBitmap(b, 0, 0, null);
                         c.restore();
-                        c.setBitmap(null);
 
                         images.add(outline);
                     }
@@ -749,7 +747,6 @@
             d.setBounds(x, y, x + w, y + h);
             d.draw(c);
             d.setBounds(oldBounds); // Restore the bounds
-            c.setBitmap(null);
         }
     }
     private Bitmap getShortcutPreview(ResolveInfo info, int cellWidth, int cellHeight) {
diff --git a/src/com/android/launcher2/BubbleTextView.java b/src/com/android/launcher2/BubbleTextView.java
index bd3a4bd..476d063 100644
--- a/src/com/android/launcher2/BubbleTextView.java
+++ b/src/com/android/launcher2/BubbleTextView.java
@@ -200,7 +200,6 @@
         canvas.setBitmap(b);
         drawWithPadding(canvas, padding);
         mOutlineHelper.applyExtraThickExpensiveOutlineWithBlur(b, canvas, glowColor, outlineColor);
-        canvas.setBitmap(null);
 
         return b;
     }
diff --git a/src/com/android/launcher2/CachedTextView.java b/src/com/android/launcher2/CachedTextView.java
index f9f68a0..ac2cc3b 100644
--- a/src/com/android/launcher2/CachedTextView.java
+++ b/src/com/android/launcher2/CachedTextView.java
@@ -130,7 +130,6 @@
             setAlpha(prevAlpha);
             mIsBuildingCache = false;
             mCacheCanvas.restore();
-            mCacheCanvas.setBitmap(null);
 
             // A hack-- we set the text to be one space (we don't make it empty just to avoid any
             // potential issues with text measurement, like line height, etc.) so that the text view
diff --git a/src/com/android/launcher2/HolographicOutlineHelper.java b/src/com/android/launcher2/HolographicOutlineHelper.java
index 748d89e..d2e1e7e 100644
--- a/src/com/android/launcher2/HolographicOutlineHelper.java
+++ b/src/com/android/launcher2/HolographicOutlineHelper.java
@@ -199,7 +199,6 @@
                 mHolographicPaint);
 
         // cleanup
-        srcDstCanvas.setBitmap(null);
         brightOutline.recycle();
         thickOuterBlur.recycle();
         thickInnerBlur.recycle();
diff --git a/src/com/android/launcher2/IconCache.java b/src/com/android/launcher2/IconCache.java
index 04f97f3..3dc7808 100644
--- a/src/com/android/launcher2/IconCache.java
+++ b/src/com/android/launcher2/IconCache.java
@@ -104,7 +104,6 @@
         Canvas c = new Canvas(b);
         d.setBounds(0, 0, b.getWidth(), b.getHeight());
         d.draw(c);
-        c.setBitmap(null);
         return b;
     }
 
diff --git a/src/com/android/launcher2/Utilities.java b/src/com/android/launcher2/Utilities.java
index c63c822..7758333 100644
--- a/src/com/android/launcher2/Utilities.java
+++ b/src/com/android/launcher2/Utilities.java
@@ -145,7 +145,6 @@
             icon.setBounds(left, top, left+width, top+height);
             icon.draw(canvas);
             icon.setBounds(sOldBounds);
-            canvas.setBitmap(null);
 
             return bitmap;
         }
@@ -212,8 +211,6 @@
             
             canvas.drawBitmap(bitmap, 0.0f, 0.0f, sDisabledPaint);
 
-            canvas.setBitmap(null);
-
             return disabled;
         }
     }
@@ -330,7 +327,6 @@
                 c.drawText(lineText, x, y, mTextPaint);
             }
 
-            c.setBitmap(null);
             return b;
         }
 
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index 26c00ad..560448e 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -1985,7 +1985,6 @@
         canvas.setBitmap(b);
         drawDragView(v, canvas, padding, true);
         mOutlineHelper.applyOuterBlur(b, canvas, outlineColor);
-        canvas.setBitmap(null);
 
         return b;
     }
@@ -2002,7 +2001,6 @@
         canvas.setBitmap(b);
         drawDragView(v, canvas, padding, false);
         mOutlineHelper.applyMediumExpensiveOutlineWithBlur(b, canvas, outlineColor, outlineColor);
-        canvas.setBitmap(null);
         return b;
     }
 
@@ -2029,7 +2027,6 @@
         p.setFilterBitmap(true);
         canvas.drawBitmap(orig, src, dst, p);
         mOutlineHelper.applyMediumExpensiveOutlineWithBlur(b, canvas, outlineColor, outlineColor);
-        canvas.setBitmap(null);
 
         return b;
     }
@@ -2053,7 +2050,6 @@
         canvas.drawRoundRect(new RectF(inset, inset, iconWidth - inset, iconHeight - inset),
                 rectRadius, rectRadius, mExternalDragOutlinePaint);
         mOutlineHelper.applyMediumExpensiveOutlineWithBlur(b, canvas, outlineColor, outlineColor);
-        canvas.setBitmap(null);
         return b;
     }
 
