diff --git a/src/com/android/launcher2/Cling.java b/src/com/android/launcher2/Cling.java
index 09c5062..0a9bc7f 100644
--- a/src/com/android/launcher2/Cling.java
+++ b/src/com/android/launcher2/Cling.java
@@ -198,7 +198,7 @@
                 if (mHandTouchGraphic == null) {
                     mHandTouchGraphic = getResources().getDrawable(R.drawable.hand);
                 }
-                int offset = -mAppIconSize / 4;
+                int offset = mAppIconSize / 4;
                 mHandTouchGraphic.setBounds(cx + offset, cy + offset,
                         cx + mHandTouchGraphic.getIntrinsicWidth() + offset,
                         cy + mHandTouchGraphic.getIntrinsicHeight() + offset);
diff --git a/src/com/android/launcher2/Folder.java b/src/com/android/launcher2/Folder.java
index a1aa670..f44d3ed 100644
--- a/src/com/android/launcher2/Folder.java
+++ b/src/com/android/launcher2/Folder.java
@@ -405,6 +405,11 @@
             @Override
             public void onAnimationEnd(Animator animation) {
                 mState = STATE_OPEN;
+
+                Cling cling = mLauncher.showFirstRunFoldersCling();
+                if (cling != null) {
+                    cling.bringToFront();
+                }
             }
         });
         oa.setDuration(mExpandDuration);
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index 3c2c3da..e4ed31f 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -77,10 +77,10 @@
 import android.view.View;
 import android.view.View.OnLongClickListener;
 import android.view.ViewGroup;
-import android.view.ViewParent;
 import android.view.WindowManager;
 import android.view.accessibility.AccessibilityEvent;
 import android.view.animation.AccelerateDecelerateInterpolator;
+import android.view.animation.AccelerateInterpolator;
 import android.view.animation.DecelerateInterpolator;
 import android.view.inputmethod.InputMethodManager;
 import android.widget.Advanceable;
@@ -162,7 +162,7 @@
     static final int APPWIDGET_HOST_ID = 1024;
     private static final int EXIT_SPRINGLOADED_MODE_SHORT_TIMEOUT = 300;
     private static final int EXIT_SPRINGLOADED_MODE_LONG_TIMEOUT = 600;
-    private static final int SHOW_CLING_DURATION = 250;
+    private static final int SHOW_CLING_DURATION = 550;
     private static final int DISMISS_CLING_DURATION = 250;
 
     private static final Object sLock = new Object();
@@ -1770,8 +1770,6 @@
         final FolderInfo info = folderIcon.mInfo;
         Folder openFolder = mWorkspace.getFolderForTag(info);
 
-        Cling cling = showFirstRunFoldersCling();
-
         // If the folder info reports that the associated folder is open, then verify that
         // it is actually opened. There have been a few instances where this gets out of sync.
         if (info.opened && openFolder == null) {
@@ -1800,10 +1798,6 @@
                 }
             }
         }
-
-        if (cling != null) {
-            cling.bringToFront();
-        }
     }
 
     private void growAndFadeOutFolderIcon(FolderIcon fi) {
@@ -3102,7 +3096,7 @@
                 cling.setAlpha(0f);
                 cling.animate()
                     .alpha(1f)
-                    .setInterpolator(new DecelerateInterpolator())
+                    .setInterpolator(new AccelerateInterpolator())
                     .setDuration(SHOW_CLING_DURATION)
                     .setStartDelay(delay)
                     .start();
