diff --git a/res/layout/tab_bar.xml b/res/layout/tab_bar.xml
index 1710218..2790362 100644
--- a/res/layout/tab_bar.xml
+++ b/res/layout/tab_bar.xml
@@ -14,9 +14,8 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/tabbarcontent"
     android:layout_width="match_parent"
-    android:layout_height="56dip"
+    android:layout_height="?android:attr/actionBarSize"
     android:orientation="horizontal"
-    style="@style/ActionBarStyle"
     >
     <com.android.browser.TabScrollView
         android:id="@+id/tabs"
@@ -31,4 +30,4 @@
         android:layout_height="44dip"
         style="@style/HoloButton"
         android:background="@drawable/add_tab_selector" />
-</merge>
\ No newline at end of file
+</merge>
diff --git a/res/values-sw600dp/styles.xml b/res/values-sw600dp/styles.xml
index 1bd6172..41e09ae 100644
--- a/res/values-sw600dp/styles.xml
+++ b/res/values-sw600dp/styles.xml
@@ -20,7 +20,7 @@
         <item name="android:windowActionBar">true</item>
         <item name="android:windowNoTitle">false</item>
         <item name="android:actionBarStyle">@style/ActionBarStyle</item>
-        <item name="android:actionButtonStyle">@style/ActionButton</item>
+        <item name="android:actionBarSize">56dip</item>
     </style>
     <style name="Suggestions" parent="@android:style/Widget.Holo.AutoCompleteTextView">
     </style>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 061d600..76a698e 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -23,9 +23,8 @@
         <item name="android:colorBackground">#FFFFFFFF</item>
         <item name="android:windowActionBar">true</item>
         <item name="android:windowNoTitle">false</item>
-        <item name="android:windowActionBarOverlay">true</item>
+        <item name="android:windowActionBarOverlay">false</item>
         <item name="android:actionBarStyle">@style/ActionBarStyle</item>
-        <item name="android:actionButtonStyle">@style/ActionButton</item>
     </style>
     <style name="DialogWhenLarge" parent="@android:style/Theme.Holo.DialogWhenLarge" >
         <item name="android:windowActionBar">false</item>
@@ -40,14 +39,10 @@
         <item name="android:backgroundDimEnabled">false</item>
         <item name="android:windowIsTranslucent">true</item>
     </style>
-    <style name="ActionBarStyle">
-        <item name="android:height">56dip</item>
+    <style name="ActionBarStyle" parent="@android:style/Widget.Holo.ActionBar">
         <item name="android:background">@drawable/bg_browsertabs</item>
         <item name="android:displayOptions"></item>
     </style>
-    <style name="ActionButton">
-        <item name="android:background">?android:attr/selectableItemBackground</item>
-    </style>
     <style name="Suggestions" parent="@android:style/Widget.Holo.AutoCompleteTextView">
         <item name="android:popupBackground">#D0000000</item>
         <item name="android:dropDownVerticalOffset">0dip</item>
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 8a4433e..03e2d8b 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -30,6 +30,7 @@
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.content.res.Configuration;
+import android.content.res.TypedArray;
 import android.database.ContentObserver;
 import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
@@ -208,6 +209,8 @@
     private DataController mDataController;
     private CrashRecoveryHandler mCrashRecoveryHandler;
 
+    private boolean mSimulateActionBarOverlayMode;
+
     private static class ClearThumbnails extends AsyncTask<File, Void, Void> {
         @Override
         public Void doInBackground(File... files) {
@@ -261,6 +264,7 @@
         mSystemAllowGeolocationOrigins.start();
 
         retainIconsOnStartup();
+        mSimulateActionBarOverlayMode = !BrowserActivity.isTablet(mActivity);
     }
 
     void start(final Bundle icicle, final Intent intent) {
@@ -1792,11 +1796,28 @@
         mActivity.startActivity(intent);
     }
 
+    int getActionModeHeight() {
+        TypedArray actionBarSizeTypedArray = mActivity.obtainStyledAttributes(
+                    new int[] { android.R.attr.actionBarSize });
+        int size = (int) actionBarSizeTypedArray.getDimension(0, 0f);
+        actionBarSizeTypedArray.recycle();
+        return size;
+    }
+
     // action mode
 
     void onActionModeStarted(ActionMode mode) {
         mUi.onActionModeStarted(mode);
         mActionMode = mode;
+        if (mSimulateActionBarOverlayMode) {
+            WebView web = getCurrentWebView();
+            // Simulate overlay mode by scrolling the webview the amount it will be
+            // pushed down. Actual overlay mode doesn't work for us as otherwise
+            // the CAB will, well, overlay the content, which breaks things like
+            // find on page.
+            int scrollBy = getActionModeHeight();
+            web.scrollBy(0, scrollBy);
+        }
     }
 
     /*
@@ -1825,6 +1846,11 @@
         if (!isInCustomActionMode()) return;
         mUi.onActionModeFinished(mInLoad);
         mActionMode = null;
+        if (mSimulateActionBarOverlayMode) {
+            WebView web = getCurrentWebView();
+            int scrollBy = getActionModeHeight();
+            web.scrollBy(0, -scrollBy);
+        }
     }
 
     boolean isInLoad() {
