diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index 1e01254..1048fd5 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -635,7 +635,14 @@
         }
     }
 
+    @Override
+    protected boolean isScrollingIndicatorEnabled() {
+        return mShrinkState != ShrinkState.SPRING_LOADED;
+    }
+
     protected void onPageBeginMoving() {
+        super.onPageBeginMoving();
+
         if (mNextPage != INVALID_PAGE) {
             // we're snapping to a particular screen
             enableChildrenCache(mCurrentPage, mNextPage);
@@ -644,14 +651,23 @@
             // swipe it either left or right (but we won't advance by more than one screen)
             enableChildrenCache(mCurrentPage - 1, mCurrentPage + 1);
         }
-        showOutlines();
+
+        // Only show page outlines as we pan if we are on large screen
+        if (LauncherApplication.isScreenLarge()) {
+            showOutlines();
+        }
     }
 
     protected void onPageEndMoving() {
+        super.onPageEndMoving();
+
         clearChildrenCache();
         // Hide the outlines, as long as we're not dragging
         if (!mDragController.dragging()) {
-            hideOutlines();
+            // Only hide page outlines as we pan if we are on large screen
+            if (LauncherApplication.isScreenLarge()) {
+                hideOutlines();
+            }
         }
         mOverScrollMaxBackgroundAlpha = 0.0f;
         mOverScrollPageIndex = -1;
@@ -1081,6 +1097,8 @@
 
     @Override
     protected void screenScrolled(int screenCenter) {
+        super.screenScrolled(screenCenter);
+
         // If the screen is not xlarge, then don't rotate the CellLayouts
         // NOTE: If we don't update the side pages alpha, then we should not hide the side pages.
         //       see unshrink().
@@ -1425,6 +1443,9 @@
             updateWhichPagesAcceptDrops(shrinkState);
         }
 
+        // Hide the scrollbar
+        hideScrollingIndicator(true);
+
         CellLayout currentPage = (CellLayout) getChildAt(mCurrentPage);
         if (currentPage == null) {
             Log.w(TAG, "currentPage is NULL! mCurrentPage " + mCurrentPage
