diff --git a/res/values-xlarge-port/styles.xml b/res/values-xlarge-port/styles.xml
new file mode 100644
index 0000000..2c5f5bb
--- /dev/null
+++ b/res/values-xlarge-port/styles.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+* Copyright (C) 2011 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*      http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+-->
+
+<resources>
+    <style name="CustomizeTabIndicator.Wide" parent="TabIndicator.Wide">
+        <item name="android:paddingLeft">20dp</item>
+        <item name="android:paddingRight">20dp</item>
+    </style>
+</resources>
diff --git a/src/com/android/launcher2/AllAppsPagedView.java b/src/com/android/launcher2/AllAppsPagedView.java
index f195470..62c441f 100644
--- a/src/com/android/launcher2/AllAppsPagedView.java
+++ b/src/com/android/launcher2/AllAppsPagedView.java
@@ -172,7 +172,9 @@
 
         availableHeight -= mPageLayoutPaddingTop + mPageLayoutPaddingBottom;
         availableHeight -= cellHeight; // Assume at least one row
-        availableHeight -= screenHeight * 0.16f;
+        Resources r = getContext().getResources();
+        float scaleFactor = r.getInteger(R.integer.config_allAppsZoomScaleFactor) / 100f;
+        availableHeight -= screenHeight * scaleFactor;
         if (availableHeight > 0) {
             return Math.min(mMaxCellCountY,
                     1 + availableHeight / (cellHeight + mPageLayoutHeightGap));
diff --git a/src/com/android/launcher2/CellLayout.java b/src/com/android/launcher2/CellLayout.java
index f189cd5..154b2a0 100644
--- a/src/com/android/launcher2/CellLayout.java
+++ b/src/com/android/launcher2/CellLayout.java
@@ -271,13 +271,10 @@
         // We use this method from Workspace to figure out how many rows/columns Launcher should
         // have. We ignore the left/right padding on CellLayout because it turns out in our design
         // the padding extends outside the visible screen size, but it looked fine anyway.
-        // However, we make sure there's at least enough space for the crosshairs at either
-        // edge to be rendered (half the crosshair is sticking out on either side)
         int cellWidth = r.getDimensionPixelSize(R.dimen.workspace_cell_width);
         int widthGap = r.getDimensionPixelSize(R.dimen.workspace_width_gap_port);
-        int crosshairsSize = r.getDrawable(R.drawable.gardening_crosshairs).getIntrinsicWidth();
 
-        return  widthGap * (numCells - 1) + cellWidth * numCells + crosshairsSize;
+        return  widthGap * (numCells - 1) + cellWidth * numCells;
     }
 
     static int widthInLandscape(Resources r, int numCells) {
@@ -311,14 +308,10 @@
         // We use this method from Workspace to figure out how many rows/columns Launcher should
         // have. We ignore the left/right padding on CellLayout because it turns out in our design
         // the padding extends outside the visible screen size, but it looked fine anyway.
-        // However, we make sure there's at least enough space for the crosshairs at the bottom
-        // to be rendered (half the crosshair is sticking out); we don't worry about the top
-        // crosshair since it can bleed into the action bar space
         int cellHeight = r.getDimensionPixelSize(R.dimen.workspace_cell_height);
         int heightGap = r.getDimensionPixelSize(R.dimen.workspace_height_gap_land);
-        int crosshairsSize = r.getDrawable(R.drawable.gardening_crosshairs).getIntrinsicHeight();
 
-        return heightGap * (numCells - 1) + cellHeight * numCells + (crosshairsSize + 1) / 2;
+        return heightGap * (numCells - 1) + cellHeight * numCells;
     }
 
     public void enableHardwareLayers() {
diff --git a/src/com/android/launcher2/CustomizeTrayTabHost.java b/src/com/android/launcher2/CustomizeTrayTabHost.java
index c6a39b3..5780818 100644
--- a/src/com/android/launcher2/CustomizeTrayTabHost.java
+++ b/src/com/android/launcher2/CustomizeTrayTabHost.java
@@ -84,7 +84,7 @@
                 .setIndicator(tabView).setContent(contentFactory));
         tabView = (TextView) mInflater.inflate(
                 R.layout.customize_tab_widget_indicator, tabWidget, false);
-        tabView.setText(mContext.getString(R.string.applications_tab_label));
+        tabView.setText(mContext.getString(R.string.all_apps_tab_apps));
         addTab(newTabSpec(APPLICATIONS_TAG)
                 .setIndicator(tabView).setContent(contentFactory));
         tabView = (TextView) mInflater.inflate(
