diff --git a/res/layout-xlarge/bookmarks_history.xml b/res/layout-sw600dp/bookmarks_history.xml
similarity index 100%
rename from res/layout-xlarge/bookmarks_history.xml
rename to res/layout-sw600dp/bookmarks_history.xml
diff --git a/res/layout-xlarge/history.xml b/res/layout-sw600dp/history.xml
similarity index 100%
rename from res/layout-xlarge/history.xml
rename to res/layout-sw600dp/history.xml
diff --git a/res/layout/bookmark_grid_row.xml b/res/layout/bookmark_grid_row.xml
index 5dc3a76..7955ad7 100644
--- a/res/layout/bookmark_grid_row.xml
+++ b/res/layout/bookmark_grid_row.xml
@@ -17,8 +17,6 @@
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:paddingLeft="@dimen/combo_rowPadding"
-    android:paddingRight="@dimen/combo_rowPadding">
+    android:layout_height="match_parent">
 </LinearLayout>
 
diff --git a/res/layout/bookmarks.xml b/res/layout/bookmarks.xml
index bcabc03..4a13c6f 100644
--- a/res/layout/bookmarks.xml
+++ b/res/layout/bookmarks.xml
@@ -20,9 +20,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical"
-    android:paddingTop="@dimen/combo_paddingTop"
-    android:paddingLeft="@dimen/combo_paddingLeftRight"
-    android:paddingRight="@dimen/combo_paddingLeftRight">
+    android:paddingTop="@dimen/combo_paddingTop">
 
     <FrameLayout
         android:id="@+id/header_container"
diff --git a/res/values-sw600dp-port/dimensions.xml b/res/values-sw600dp-port/dimensions.xml
index 3ba38fe..682bbaf 100644
--- a/res/values-sw600dp-port/dimensions.xml
+++ b/res/values-sw600dp-port/dimensions.xml
@@ -14,7 +14,5 @@
     <dimen name="widgetThumbnailHeight">84dip</dimen>
     <dimen name="widgetHorizontalSpacing">6dip</dimen>
     <dimen name="widgetVerticalSpacing">6dip</dimen>
-    <dimen name="combo_paddingLeftRight">16dip</dimen>
-    <dimen name="combo_horizontalSpacing">8dip</dimen>
-    <dimen name="combo_rowPadding">10dip</dimen>
+    <dimen name="combo_horizontalSpacing">4dip</dimen>
 </resources>
diff --git a/res/values-sw600dp/dimensions.xml b/res/values-sw600dp/dimensions.xml
index 82fc37e..977148b 100644
--- a/res/values-sw600dp/dimensions.xml
+++ b/res/values-sw600dp/dimensions.xml
@@ -25,9 +25,7 @@
     <dimen name="mv_border_width">3dp</dimen>
     <!-- For the combined Bookmarks History view -->
     <dimen name="combo_paddingTop">50dip</dimen>
-    <dimen name="combo_paddingLeftRight">134dip</dimen>
     <dimen name="combo_horizontalSpacing">8dip</dimen>
-    <dimen name="combo_rowPadding">10dip</dimen>
     <dimen name="qc_radius_start">50dip</dimen>
     <dimen name="qc_radius_increment">70dip</dimen>
     <dimen name="qc_slop">15dip</dimen>
diff --git a/res/values-xlarge/styles.xml b/res/values-sw600dp/styles.xml
similarity index 100%
rename from res/values-xlarge/styles.xml
rename to res/values-sw600dp/styles.xml
diff --git a/res/values/dimensions.xml b/res/values/dimensions.xml
index dbb0c60..950de5b 100644
--- a/res/values/dimensions.xml
+++ b/res/values/dimensions.xml
@@ -55,9 +55,7 @@
     <dimen name="widgetVerticalSpacing">12dip</dimen>
     <!-- For the combined Bookmarks History view -->
     <dimen name="combo_paddingTop">10dip</dimen>
-    <dimen name="combo_paddingLeftRight">0dip</dimen>
     <dimen name="combo_horizontalSpacing">6dip</dimen>
-    <dimen name="combo_rowPadding">0dip</dimen>
     <dimen name="tab_view_thumbnail_height">76dip</dimen>
     <!-- Preference activity side margins -->
     <dimen name="preference_screen_side_margin">0dp</dimen>
diff --git a/res/values/integers.xml b/res/values/integers.xml
index ad0ed90..5a8c15f 100644
--- a/res/values/integers.xml
+++ b/res/values/integers.xml
@@ -27,4 +27,6 @@
     <integer name="comboViewFadeInDuration">400</integer>
     <!--  fade between tabs duration -->
     <integer name="tabFadeDuration">300</integer>
+    <!-- The maximum number of columns in the bookmark grid view -->
+    <integer name="max_bookmark_columns">5</integer>
 </resources>
diff --git a/src/com/android/browser/BrowserBookmarksAdapter.java b/src/com/android/browser/BrowserBookmarksAdapter.java
index 7543528..16bcda5 100644
--- a/src/com/android/browser/BrowserBookmarksAdapter.java
+++ b/src/com/android/browser/BrowserBookmarksAdapter.java
@@ -52,6 +52,12 @@
     }
 
     void bindGridView(View view, Context context, Cursor cursor) {
+        // We need to set this to handle rotation and other configuration change
+        // events. If the padding didn't change, this is a no op.
+        int padding = context.getResources()
+                .getDimensionPixelSize(R.dimen.combo_horizontalSpacing);
+        view.setPadding(padding, view.getPaddingTop(),
+                padding, view.getPaddingBottom());
         ImageView thumb = (ImageView) view.findViewById(R.id.thumb);
         TextView tv = (TextView) view.findViewById(R.id.label);
 
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index f92272f..d871f22 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -556,13 +556,9 @@
     public void onConfigurationChanged(Configuration newConfig) {
         super.onConfigurationChanged(newConfig);
         Resources res = getActivity().getResources();
-        int horizontalSpacing = (int) res.getDimension(R.dimen.combo_horizontalSpacing);
-        mGrid.setHorizontalSpacing(horizontalSpacing);
         mGrid.setColumnWidthFromLayout(R.layout.bookmark_thumbnail);
-        int paddingLeftRight = (int) res.getDimension(R.dimen.combo_paddingLeftRight);
         int paddingTop = (int) res.getDimension(R.dimen.combo_paddingTop);
-        mRoot.setPadding(paddingLeftRight, paddingTop,
-                paddingLeftRight, 0);
+        mRoot.setPadding(0, paddingTop, 0, 0);
         getActivity().invalidateOptionsMenu();
     }
 
diff --git a/src/com/android/browser/view/BookmarkExpandableGridView.java b/src/com/android/browser/view/BookmarkExpandableGridView.java
index f6b9f19..c8811d1 100644
--- a/src/com/android/browser/view/BookmarkExpandableGridView.java
+++ b/src/com/android/browser/view/BookmarkExpandableGridView.java
@@ -57,6 +57,7 @@
     private boolean mLongClickable;
     private BreadCrumbView.Controller mBreadcrumbController;
     private BookmarkDragHandler mDragHandler;
+    private int mMaxColumnCount;
 
     public BookmarkExpandableGridView(Context context) {
         super(context);
@@ -78,14 +79,27 @@
         mContext = context;
         setItemsCanFocus(true);
         setLongClickable(false);
+        mMaxColumnCount = mContext.getResources()
+                .getInteger(R.integer.max_bookmark_columns);
         mAdapter = new BookmarkAccountAdapter(mContext);
         super.setAdapter(mAdapter);
     }
 
     @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        int width = MeasureSpec.getSize(widthMeasureSpec);
+        int widthMode = MeasureSpec.getMode(widthMeasureSpec);
+        if (width > 0) {
+            mAdapter.measureChildren(width);
+            if (mAdapter.mRowPadding > 0) {
+                width -= mAdapter.mRowPadding * 2;
+            }
+            widthMeasureSpec = MeasureSpec.makeMeasureSpec(width, widthMode);
+        }
         super.onMeasure(widthMeasureSpec, heightMeasureSpec);
-        mAdapter.measureChildren();
+        if (width != getMeasuredWidth()) {
+            mAdapter.measureChildren(getMeasuredWidth());
+        }
     }
 
     @Override
@@ -100,10 +114,6 @@
         mColumnWidth = v.getMeasuredWidth();
     }
 
-    public void setHorizontalSpacing(int horizontalSpacing) {
-        // TODO Auto-generated method stub
-    }
-
     public void clearAccounts() {
         mAdapter.clear();
     }
@@ -330,11 +340,6 @@
                 convertView = mInflater.inflate(R.layout.bookmark_grid_row, parent, false);
             }
             LinearLayout row = (LinearLayout) convertView;
-            row.setPadding(
-                    mRowPadding,
-                    row.getPaddingTop(),
-                    mRowPadding,
-                    row.getPaddingBottom());
             if (row.getChildCount() > mRowCount) {
                 row.removeViews(mRowCount, row.getChildCount() - mRowCount);
             }
@@ -387,13 +392,13 @@
             return mGroups.size();
         }
 
-        public void measureChildren() {
-            int viewWidth = getMeasuredWidth();
+        public void measureChildren(int viewWidth) {
             if (mLastViewWidth == viewWidth) return;
 
-            ViewGroup parent = (ViewGroup) mInflater.inflate(R.layout.bookmark_grid_row, null);
-            viewWidth -= parent.getPaddingLeft() + parent.getPaddingRight();
             int rowCount = viewWidth / mColumnWidth;
+            if (mMaxColumnCount > 0) {
+                rowCount = Math.min(rowCount, mMaxColumnCount);
+            }
             int rowPadding = (viewWidth - (rowCount * mColumnWidth)) / 2;
             boolean notify = rowCount != mRowCount || rowPadding != mRowPadding;
             mRowCount = rowCount;
