diff --git a/java/res/layout/input_trans.xml b/java/res/layout/input_trans.xml
index a988bcc..94806f7 100755
--- a/java/res/layout/input_trans.xml
+++ b/java/res/layout/input_trans.xml
@@ -25,5 +25,6 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:background="#A0000000"
+        android:verticalCorrection="0dip"
         android:keyBackground="@drawable/btn_keyboard_key_fulltrans"
         />
diff --git a/java/src/com/android/inputmethod/latin/LatinKeyboardView.java b/java/src/com/android/inputmethod/latin/LatinKeyboardView.java
index 7ce1e4e..d0c6bc6 100644
--- a/java/src/com/android/inputmethod/latin/LatinKeyboardView.java
+++ b/java/src/com/android/inputmethod/latin/LatinKeyboardView.java
@@ -19,11 +19,11 @@
 import java.util.List;
 
 import android.content.Context;
-import android.content.res.Configuration;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.inputmethodservice.Keyboard;
 import android.inputmethodservice.KeyboardView;
+import android.inputmethodservice.KeyboardView.OnKeyboardActionListener;
 import android.inputmethodservice.Keyboard.Key;
 import android.os.Handler;
 import android.os.Message;
@@ -173,19 +173,17 @@
             LayoutInflater li = (LayoutInflater) getContext().getSystemService(
                     Context.LAYOUT_INFLATER_SERVICE);
             mExtension = (LatinKeyboardView) li.inflate(R.layout.input_trans, null);
-            mExtension.setOnKeyboardActionListener((LatinIME) getContext());
+            mExtension.setOnKeyboardActionListener(
+                    new ExtensionKeyboardListener(getOnKeyboardActionListener()));
             mExtension.setPopupParent(this);
             mExtension.setPopupOffset(0, -windowLocation[1]);
             Keyboard keyboard;
             mExtension.setKeyboard(keyboard = new LatinKeyboard(getContext(),
                     ((LatinKeyboard) getKeyboard()).getExtension()));
-            if (getContext().getResources().getConfiguration().orientation
-                    == Configuration.ORIENTATION_LANDSCAPE) {
-                mExtension.setPreviewEnabled(false);
-            }
             mExtensionPopup.setContentView(mExtension);
             mExtensionPopup.setWidth(getWidth());
             mExtensionPopup.setHeight(keyboard.getHeight());
+            mExtensionPopup.setAnimationStyle(-1);
             getLocationInWindow(windowLocation);
             // TODO: Fix the "- 30". 
             mExtension.setPopupOffset(0, -windowLocation[1] - 30);
@@ -206,11 +204,42 @@
     }
 
     private void closeExtension() {
-        mExtension.setVisibility(INVISIBLE);
         mExtension.closing();
+        mExtension.setVisibility(INVISIBLE);
         mExtensionVisible = false;
     }
 
+    private static class ExtensionKeyboardListener implements OnKeyboardActionListener {
+        private OnKeyboardActionListener mTarget;
+        ExtensionKeyboardListener(OnKeyboardActionListener target) {
+            mTarget = target;
+        }
+        public void onKey(int primaryCode, int[] keyCodes) {
+            mTarget.onKey(primaryCode, keyCodes);
+        }
+        public void onPress(int primaryCode) {
+            mTarget.onPress(primaryCode);
+        }
+        public void onRelease(int primaryCode) {
+            mTarget.onRelease(primaryCode);
+        }
+        public void onText(CharSequence text) {
+            mTarget.onText(text);
+        }
+        public void swipeDown() {
+            // Don't pass through
+        }
+        public void swipeLeft() {
+            // Don't pass through
+        }
+        public void swipeRight() {
+            // Don't pass through
+        }
+        public void swipeUp() {
+            // Don't pass through
+        }
+    }
+
     /****************************  INSTRUMENTATION  *******************************/
 
     static final boolean DEBUG_AUTO_PLAY = false;
