diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index 927bd4c..d068164 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -243,6 +243,7 @@
      * @param currentScreen
      */
     void setCurrentScreen(int currentScreen) {
+        if (!mScroller.isFinished()) mScroller.abortAnimation();
         clearVacantCache();
         mCurrentScreen = Math.max(0, Math.min(currentScreen, getChildCount() - 1));
         scrollTo(mCurrentScreen * getWidth(), 0);
@@ -808,10 +809,6 @@
     }
 
     void snapToScreen(int whichScreen) {
-        snapToScreen(whichScreen, true);
-    }
-
-    void snapToScreen(int whichScreen, boolean animate) {
         //if (!mScroller.isFinished()) return;
 
         whichScreen = Math.max(0, Math.min(whichScreen, getChildCount() - 1));
@@ -836,9 +833,8 @@
         final int duration = screenDelta * 300;
         awakenScrollBars(duration);
 
-        // 1ms is close to don't animate
         if (!mScroller.isFinished()) mScroller.abortAnimation();
-        mScroller.startScroll(mScrollX, 0, delta, 0, animate ? duration : 1);
+        mScroller.startScroll(mScrollX, 0, delta, 0, duration);
         invalidate();
     }
 
@@ -1268,7 +1264,11 @@
     }
 
     void moveToDefaultScreen(boolean animate) {
-        snapToScreen(mDefaultScreen, animate);
+        if (animate) {
+            snapToScreen(mDefaultScreen);
+        } else {
+            setCurrentScreen(mDefaultScreen);
+        }
         getChildAt(mDefaultScreen).requestFocus();
     }
 
