diff --git a/res/layout/nav_screen.xml b/res/layout/nav_screen.xml
index eb5059c..2170154 100644
--- a/res/layout/nav_screen.xml
+++ b/res/layout/nav_screen.xml
@@ -62,7 +62,9 @@
         android:id="@+id/galleryholder"
         android:layout_width="match_parent"
         android:layout_height="0dip"
-        android:layout_weight="1" />
+        android:layout_weight="1"
+        android:paddingTop="5dp"
+        android:paddingBottom="5dp" />
     <LinearLayout
         android:id="@+id/navbar"
         android:orientation="horizontal"
diff --git a/res/layout/nav_tab_view.xml b/res/layout/nav_tab_view.xml
index f6af975..f9e471b 100644
--- a/res/layout/nav_tab_view.xml
+++ b/res/layout/nav_tab_view.xml
@@ -27,7 +27,7 @@
         android:id="@+id/titlebar"
         android:orientation="horizontal"
         android:layout_width="match_parent"
-        android:layout_height="44dip" >
+        android:layout_height="@dimen/toolbar_height" >
         <ImageView
             android:id="@+id/favicon"
             android:layout_width="22dip"
@@ -67,4 +67,4 @@
         android:layout_height="wrap_content"
         android:adjustViewBounds="true"
         android:scaleType="fitXY" />
-</com.android.browser.view.TabHolderView>
\ No newline at end of file
+</com.android.browser.view.TabHolderView>
diff --git a/res/values/dimensions.xml b/res/values/dimensions.xml
index 58fbe52..4d1c534 100644
--- a/res/values/dimensions.xml
+++ b/res/values/dimensions.xml
@@ -66,4 +66,5 @@
     <dimen name="preference_widget_width">56dp</dimen>
     <dimen name="nav_tab_spacing">8dp</dimen>
     <dimen name="menu_width">240dip</dimen>
+    <dimen name="toolbar_height">40dip</dimen>
 </resources>
diff --git a/src/com/android/browser/NavScreen.java b/src/com/android/browser/NavScreen.java
index edbaa3b..c61c39f 100644
--- a/src/com/android/browser/NavScreen.java
+++ b/src/com/android/browser/NavScreen.java
@@ -100,6 +100,10 @@
         mPopup = popup;
     }
 
+    protected float getToolbarHeight() {
+        return mActivity.getResources().getDimension(R.dimen.toolbar_height);
+    }
+
     protected void dismissMenu() {
         if (mPopup != null) {
             mPopup.dismiss();
diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java
index fe13139..13a5257 100644
--- a/src/com/android/browser/PhoneUi.java
+++ b/src/com/android/browser/PhoneUi.java
@@ -298,10 +298,12 @@
         if (mAnimating) return;
         mAnimating = true;
         mNavScreen = new NavScreen(mActivity, mUiController, this);
+        float yoffset = 0;
         WebView web = getWebView();
         if (web != null) {
             int w = web.getWidth();
             int h = web.getHeight();
+            yoffset = mNavScreen.getToolbarHeight() -  web.getVisibleTitleHeight();
             mNavScreen.setTabDimensions((int) (w * NAV_TAB_SCALE),
                     (int) (h * NAV_TAB_SCALE));
         }
@@ -309,9 +311,11 @@
         mCustomViewContainer.addView(mNavScreen, COVER_SCREEN_GRAVITY_CENTER);
         mContentView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
         ObjectAnimator animx = ObjectAnimator.ofFloat(mContentView,
-                "scaleX", 1.0f, 0.85f);
+                "scaleX", 1.0f, NAV_TAB_SCALE);
         ObjectAnimator animy = ObjectAnimator.ofFloat(mContentView,
-                "scaleY", 1.0f, 0.85f);
+                "scaleY", 1.0f, NAV_TAB_SCALE);
+        ObjectAnimator translatey = ObjectAnimator.ofFloat(mContentView,
+                "translationY", 0, yoffset * NAV_TAB_SCALE);
         AnimatorSet anims = new AnimatorSet();
         anims.setDuration(200);
         anims.addListener(new AnimatorListener() {
@@ -333,7 +337,7 @@
             public void onAnimationStart(Animator animation) {
             }
         });
-        anims.playTogether(animx, animy);
+        anims.playTogether(animx, animy, translatey);
         anims.start();
     }
 
@@ -343,6 +347,7 @@
         mContentView.setVisibility(View.GONE);
         mContentView.setScaleX(1.0f);
         mContentView.setScaleY(1.0f);
+        mContentView.setTranslationY(0);
         BrowserWebView web = (BrowserWebView) getWebView();
         if (web != null) {
             mActiveTab.setScreenshot(web.capture());
@@ -358,10 +363,17 @@
         mAnimating = true;
         mNavScreen.setLayerType(View.LAYER_TYPE_HARDWARE, null);
         if (animateToPage) {
+            float yoffset = 0;
+            WebView web = mNavScreen.getSelectedTab().getWebView();
+            if (web != null) {
+                yoffset = mNavScreen.getToolbarHeight() -  web.getVisibleTitleHeight();
+            }
             ObjectAnimator animx = ObjectAnimator.ofFloat(mNavScreen, "scaleX",
-                    1.0f, 1.2f);
+                    1.0f, 1 / NAV_TAB_SCALE);
             ObjectAnimator animy = ObjectAnimator.ofFloat(mNavScreen, "scaleY",
-                    1.0f, 1.2f);
+                    1.0f, 1 / NAV_TAB_SCALE);
+            ObjectAnimator translatey = ObjectAnimator.ofFloat(mNavScreen,
+                    "translationY", 0, -yoffset);
             AnimatorSet anims = new AnimatorSet();
             anims.setDuration(200);
             anims.addListener(new AnimatorListener() {
@@ -383,7 +395,7 @@
                 public void onAnimationStart(Animator animation) {
                 }
             });
-            anims.playTogether(animx, animy);
+            anims.playTogether(animx, animy, translatey);
             anims.start();
         } else {
             finishHideNavScreen();
