diff --git a/src/com/android/launcher2/PagedView.java b/src/com/android/launcher2/PagedView.java
index 6138b86..c018cf1 100644
--- a/src/com/android/launcher2/PagedView.java
+++ b/src/com/android/launcher2/PagedView.java
@@ -273,12 +273,12 @@
         }
     }
 
-    private void pageBeginMoving() {
+    protected void pageBeginMoving() {
         mIsPageMoving = true;
         onPageBeginMoving();
     }
 
-    private void pageEndMoving() {
+    protected void pageEndMoving() {
         onPageEndMoving();
         mIsPageMoving = false;
     }
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index 2800b02..212ee09 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -306,10 +306,15 @@
                 }
                 mWallpaperOffset.setOverrideHorizontalCatchupConstant(false);
                 mAnimator = null;
+                enableChildrenLayers(false);
             }
         };
         mShrinkAnimationListener = new AnimatorListenerAdapter() {
             @Override
+            public void onAnimationStart(Animator animation) {
+                enableChildrenLayers(true);
+            }
+            @Override
             public void onAnimationEnd(Animator animation) {
                 mWallpaperOffset.setOverrideHorizontalCatchupConstant(false);
                 mAnimator = null;
@@ -1253,6 +1258,25 @@
         return super.onTouchEvent(ev);
     }
 
+    protected void enableChildrenLayers(boolean enable) {
+        for (int i = 0; i < getPageCount(); i++) {
+            setChildrenLayersEnabled(enable);
+        }
+    }
+    @Override
+    protected void pageBeginMoving() {
+        enableChildrenLayers(true);
+        super.pageBeginMoving();
+    }
+
+    @Override
+    protected void pageEndMoving() {
+        if (!mIsSmall && !mIsInUnshrinkAnimation) {
+            enableChildrenLayers(false);
+        }
+        super.pageEndMoving();
+    }
+
     @Override
     protected void onWallpaperTap(MotionEvent ev) {
         final int[] position = mTempCell;
