diff --git a/res/drawable/dialog_bubble_step02.9.png b/res/drawable/dialog_bubble_step02.9.png
index d77f85fe28e807d099c5bef39e8eb50c8aed60bb..62386f2975631501e6836d8c16484a3341895d44 100755
Binary files a/res/drawable/dialog_bubble_step02.9.png and b/res/drawable/dialog_bubble_step02.9.png differ
diff --git a/res/layout/bubble_text.xml b/res/layout/bubble_text.xml
index af8abce4769fd967a3e26103457273261a20d940..eae3ab6fed00d4d68f383ea4b9fa02bbba5aab64 100644
--- a/res/layout/bubble_text.xml
+++ b/res/layout/bubble_text.xml
@@ -24,4 +24,5 @@
     android:textSize="14sp"
     android:textColor="?android:attr/textColorPrimary"
     android:minWidth="32dip"
+    android:gravity="center"
     />
diff --git a/src/com/android/inputmethod/latin/LatinIME.java b/src/com/android/inputmethod/latin/LatinIME.java
index 17ad3fc729c0b205460114e8ee22259f9a5e5b05..e5ad75bcabd78a65ac34d29d637f69977c537ff6 100644
--- a/src/com/android/inputmethod/latin/LatinIME.java
+++ b/src/com/android/inputmethod/latin/LatinIME.java
@@ -190,6 +190,7 @@ public class LatinIME extends InputMethodService
         }
         if (!mTutorialShownBefore && mTutorial != null) {
             mTutorial.close(false);
+            mTutorial = null;
         }
         super.onConfigurationChanged(conf);
     }
@@ -299,13 +300,24 @@ public class LatinIME extends InputMethodService
         if (mSuggest != null) {
             mSuggest.setCorrectionMode(mCorrectionMode);
         }
+        mPredictionOn = mPredictionOn && mCorrectionMode > 0;
         if (!mTutorialShownBefore && mTutorial == null) {
-            mHandler.sendEmptyMessageDelayed(MSG_CHECK_TUTORIAL, 1000);
+            mHandler.sendEmptyMessageDelayed(MSG_CHECK_TUTORIAL, 
+                    mInputView.isShown() ? 100 : 3000);
         }
-        mPredictionOn = mPredictionOn && mCorrectionMode > 0;
         if (TRACE) Debug.startMethodTracing("latinime");
     }
 
+    @Override
+    public void onWindowShown() {
+        super.onWindowShown();
+        // Bring the tutorial up faster, if window just shown
+        if (!mTutorialShownBefore && mTutorial == null) {
+            mHandler.removeMessages(MSG_CHECK_TUTORIAL);
+            mHandler.sendEmptyMessageDelayed(MSG_CHECK_TUTORIAL, 1000);
+        }
+    }
+    
     @Override
     public void onFinishInput() {
         super.onFinishInput();
@@ -313,9 +325,10 @@ public class LatinIME extends InputMethodService
         if (mInputView != null) {
             mInputView.closing();
         }
-        if (!mTutorialShownBefore && mTutorial != null) {
-            mTutorial.close(false);
-        }        
+//        if (!mTutorialShownBefore && mTutorial != null) {
+//            mTutorial.close(false);
+//            mTutorial = null;
+//        }        
     }
 
     @Override
@@ -346,6 +359,10 @@ public class LatinIME extends InputMethodService
     @Override
     public void hideWindow() {
         if (TRACE) Debug.stopMethodTracing();
+        if (!mTutorialShownBefore && mTutorial != null) {
+            mTutorial.close(false);
+            mTutorial = null;
+        }
         super.hideWindow();
         TextEntryState.endSession();
     }
diff --git a/src/com/android/inputmethod/latin/Tutorial.java b/src/com/android/inputmethod/latin/Tutorial.java
index 2b3138bf91219a6f87f6a5f62d3fa9230d156b17..d944d17bfdad13d5ba343fd2297d5e0af9dc8e5e 100644
--- a/src/com/android/inputmethod/latin/Tutorial.java
+++ b/src/com/android/inputmethod/latin/Tutorial.java
@@ -168,22 +168,22 @@ public class Tutorial {
                 R.string.tip_dismiss,
                 false, true);
         mBubbles.add(b0);
-        Bubble b1 = new Bubble(context, inputView, 
-                R.drawable.dialog_bubble_step03, 
-                (int) (inputWidth * 0.85) + mBubblePointerOffset, inputHeight / 5, 
-                (int) (inputWidth * 0.45),
-                Gravity.TOP | Gravity.RIGHT,
-                R.string.tip_long_press,
-                true, false);
-        mBubbles.add(b1);
-        Bubble b2 = new Bubble(inputView.getContext(), inputView, 
-                R.drawable.dialog_bubble_step04, 
-                inputWidth / 10 - mBubblePointerOffset, inputHeight - inputHeight / 5,
-                (int) (inputWidth * 0.45),
-                Gravity.BOTTOM | Gravity.LEFT,
-                R.string.tip_access_symbols,
-                true, false);
-        mBubbles.add(b2);
+//        Bubble b1 = new Bubble(context, inputView, 
+//                R.drawable.dialog_bubble_step03, 
+//                (int) (inputWidth * 0.85) + mBubblePointerOffset, inputHeight / 5, 
+//                (int) (inputWidth * 0.45),
+//                Gravity.TOP | Gravity.RIGHT,
+//                R.string.tip_long_press,
+//                true, false);
+//        mBubbles.add(b1);
+//        Bubble b2 = new Bubble(inputView.getContext(), inputView, 
+//                R.drawable.dialog_bubble_step04, 
+//                inputWidth / 10 - mBubblePointerOffset, inputHeight - inputHeight / 5,
+//                (int) (inputWidth * 0.45),
+//                Gravity.BOTTOM | Gravity.LEFT,
+//                R.string.tip_access_symbols,
+//                true, false);
+//        mBubbles.add(b2);
         mInputView = inputView;
     }