diff --git a/quickstep/res/values/dimens.xml b/quickstep/res/values/dimens.xml
index 675b261..17d5c60 100644
--- a/quickstep/res/values/dimens.xml
+++ b/quickstep/res/values/dimens.xml
@@ -33,8 +33,7 @@
 
     <!-- Launcher app transition -->
     <dimen name="content_trans_y">50dp</dimen>
-    <dimen name="springs_start_slide_trans_y">-100dp</dimen>
-    <dimen name="springs_end_slide_trans_y">6.25dp</dimen>
+    <dimen name="springs_trans_y">-70dp</dimen>
     <dimen name="closing_window_trans_y">115dp</dimen>
 
     <dimen name="recents_empty_message_text_size">16sp</dimen>
diff --git a/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java b/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java
index b9ff284..252e3ea 100644
--- a/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java
+++ b/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java
@@ -125,13 +125,13 @@
     // Progress = 0: All apps is fully pulled up, Progress = 1: All apps is fully pulled down.
     public static final float ALL_APPS_PROGRESS_OFF_SCREEN = 1.3059858f;
 
-    private static final int APP_CLOSE_ROW_START_DELAY_MS = 9;
+    private static final int APP_CLOSE_ROW_START_DELAY_MS = 8;
 
-    private static final int SPRING_SLIDE_DURATION = 170;
-    private static final int SPRING_OSCILLATE_DURATION = 550;
-    private static final int SPRING_SETTLE_DURATION = 25;
-
-    private static final int SPRING_ALPHA_DURATION = 100;
+    // The sum of [slide, oscillate, and settle] should be <= LAUNCHER_RESUME_TOTAL_DURATION.
+    private static final int LAUNCHER_RESUME_TOTAL_DURATION = 346;
+    private static final int SPRING_SLIDE_DURATION = 166;
+    private static final int SPRING_OSCILLATE_DURATION = 130;
+    private static final int SPRING_SETTLE_DURATION = 50;
 
     private final Launcher mLauncher;
     private final DragLayer mDragLayer;
@@ -173,8 +173,8 @@
         Resources res = mLauncher.getResources();
         mContentTransY = res.getDimensionPixelSize(R.dimen.content_trans_y);
         mClosingWindowTransY = res.getDimensionPixelSize(R.dimen.closing_window_trans_y);
-        mStartSlideTransY = res.getDimensionPixelSize(R.dimen.springs_start_slide_trans_y);
-        mEndSlideTransY = res.getDimensionPixelSize(R.dimen.springs_end_slide_trans_y);
+        mStartSlideTransY = res.getDimensionPixelSize(R.dimen.springs_trans_y);
+        mEndSlideTransY = -mStartSlideTransY * 0.1f;
 
         mLauncher.addOnDeviceProfileChangeListener(this);
         registerRemoteAnimations();
@@ -837,7 +837,7 @@
         v.setAlpha(0);
         ObjectAnimator alpha = ObjectAnimator.ofFloat(v, View.ALPHA, 1f);
         alpha.setInterpolator(LINEAR);
-        alpha.setDuration(SPRING_ALPHA_DURATION);
+        alpha.setDuration(SPRING_SLIDE_DURATION + SPRING_OSCILLATE_DURATION);
         alpha.setStartDelay(startDelay);
         outAnimator.play(alpha);
 
diff --git a/src/com/android/launcher3/anim/Interpolators.java b/src/com/android/launcher3/anim/Interpolators.java
index 389da48..8a1abf4 100644
--- a/src/com/android/launcher3/anim/Interpolators.java
+++ b/src/com/android/launcher3/anim/Interpolators.java
@@ -119,20 +119,18 @@
     public static final Interpolator OSCILLATE = new Interpolator() {
 
         // Used to scale the oscillations horizontally
-        private final float horizontalScale = 4f;
+        private final float horizontalScale = 1f;
         // Used to shift the oscillations horizontally
-        private final float horizontalShift = 0.22f;
+        private final float horizontalShift = 0.5f;
         // Used to scale the oscillations vertically
         private final float verticalScale = 1f;
         // Used to shift the oscillations vertically
         private final float verticalShift = 1f;
-        // Amplitude of oscillation
-        private final float amplitude = 0.9f;
 
         @Override
         public float getInterpolation(float t) {
             t = horizontalScale * (t + horizontalShift);
-            return (float) ((verticalScale * (Math.exp(-t) * Math.cos(amplitude * Math.PI * t)))
+            return (float) ((verticalScale * (Math.exp(-t) * Math.cos(2 * Math.PI * t)))
                     + verticalShift);
         }
     };
