diff --git a/quickstep/src/com/android/quickstep/LongSwipeHelper.java b/quickstep/src/com/android/quickstep/LongSwipeHelper.java
index 491cbb3..6b66ec8 100644
--- a/quickstep/src/com/android/quickstep/LongSwipeHelper.java
+++ b/quickstep/src/com/android/quickstep/LongSwipeHelper.java
@@ -118,8 +118,7 @@
             if (blockedFling && !toAllApps) {
                 Interpolators.OvershootParams overshoot = new OvershootParams(currentFraction,
                         currentFraction, endProgress, velocityPxPerMs, (int) mMaxSwipeDistance);
-                duration = (overshoot.duration + duration)
-                        * LauncherAnimUtils.blockedFlingDurationFactor(0);
+                duration = (overshoot.duration + duration);
                 duration = Utilities.boundToRange(duration, MIN_OVERSHOOT_DURATION,
                         MAX_SWIPE_DURATION);
                 interpolator = overshoot.interpolator;
diff --git a/src/com/android/launcher3/anim/Interpolators.java b/src/com/android/launcher3/anim/Interpolators.java
index 3e01f72..675e26d 100644
--- a/src/com/android/launcher3/anim/Interpolators.java
+++ b/src/com/android/launcher3/anim/Interpolators.java
@@ -57,6 +57,9 @@
 
     public static final Interpolator EXAGGERATED_EASE;
 
+    private static final int MIN_SETTLE_DURATION = 200;
+    private static final float OVERSHOOT_FACTOR = 0.9f;
+
     static {
         Path exaggeratedEase = new Path();
         exaggeratedEase.moveTo(0, 0);
@@ -186,7 +189,8 @@
             start = startProgress;
             int startPx = (int) (start * totalDistancePx);
             // Overshoot by about half a frame.
-            float overshootBy = velocityPxPerMs * SINGLE_FRAME_MS / totalDistancePx / 2;
+            float overshootBy = OVERSHOOT_FACTOR * velocityPxPerMs *
+                    SINGLE_FRAME_MS / totalDistancePx / 2;
             overshootBy = Utilities.boundToRange(overshootBy, 0.02f, 0.15f);
             end = overshootPastProgress + overshootBy;
             int endPx = (int) (end  * totalDistancePx);
@@ -211,7 +215,9 @@
             // Above formula assumes constant acceleration. Since we use ACCEL_DEACCEL, we actually
             // have acceleration to halfway then deceleration the rest. So the formula becomes:
             //          t = sqrt(d/a) * 2 (half the distance for accel, half for deaccel)
-            long settleDuration = (long) Math.sqrt(settleDistancePx / decelerationPxPerMs) * 2;
+            long settleDuration = (long) Math.sqrt(settleDistancePx / decelerationPxPerMs) * 4;
+
+            settleDuration = Math.max(MIN_SETTLE_DURATION, settleDuration);
             // How much of the animation to devote to playing the overshoot (the rest is for settle).
             float overshootFraction = (float) duration / (duration + settleDuration);
             duration += settleDuration;
@@ -228,4 +234,4 @@
                     : settle.getInterpolation(t);
         }
     }
-}
\ No newline at end of file
+}
