diff --git a/res/layout/all_apps_2d.xml b/res/layout-land/all_apps_2d.xml
similarity index 73%
copy from res/layout/all_apps_2d.xml
copy to res/layout-land/all_apps_2d.xml
index 7bbfa91..a253b93 100644
--- a/res/layout/all_apps_2d.xml
+++ b/res/layout-land/all_apps_2d.xml
@@ -30,18 +30,17 @@
         android:drawSelectorOnTop="false"
         android:listSelector="@drawable/grid_selector"
         android:verticalSpacing="10dip"
-        android:numColumns="4"
+        android:numColumns="6"
         android:fadingEdgeLength="48dip"
         android:cacheColorHint="#FF000000"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:layout_alignParentBottom="true"
-        android:layout_marginBottom="28dip"
-        android:layout_marginTop="8dip"
-        android:nextFocusDown="@+id/all_apps_2d_home"
+        android:layout_alignParentRight="true"
+        android:layout_marginRight="@dimen/button_bar_height_portrait"
+        android:nextFocusRight="@+id/all_apps_2d_home"
         android:nextFocusUp="@null"
         android:nextFocusLeft="@null"
-        android:nextFocusRight="@null"
+        android:nextFocusDown="@null"
         />
 
     <view
@@ -49,14 +48,15 @@
         android:id="@+id/all_apps_2d_home"
         android:tag="all_apps_2d_home"
         android:src="@drawable/home_button"
-        android:background="#00000000"
-        android:layout_centerHorizontal="true"
-        android:layout_alignParentBottom="true"
-        android:layout_width="wrap_content"
-        android:layout_height="@dimen/button_bar_height"
-        android:nextFocusUp="@+id/all_apps_2d_grid"
+        android:background="#FF000000"
+        android:layout_alignParentRight="true"
+        android:layout_centerVertical="true"
+        android:layout_height="wrap_content"
+        android:layout_width="@dimen/button_bar_height_portrait"
+        android:paddingBottom="@dimen/status_bar_height"
+        android:nextFocusLeft="@+id/all_apps_2d_grid"
         android:nextFocusDown="@null"
-        android:nextFocusLeft="@null"
+        android:nextFocusUp="@null"
         android:nextFocusRight="@null"
         />
 
diff --git a/res/layout/all_apps_2d.xml b/res/layout-port/all_apps_2d.xml
similarity index 95%
rename from res/layout/all_apps_2d.xml
rename to res/layout-port/all_apps_2d.xml
index 7bbfa91..0607d62 100644
--- a/res/layout/all_apps_2d.xml
+++ b/res/layout-port/all_apps_2d.xml
@@ -36,7 +36,7 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:layout_alignParentBottom="true"
-        android:layout_marginBottom="28dip"
+        android:layout_marginBottom="@dimen/button_bar_height"
         android:layout_marginTop="8dip"
         android:nextFocusDown="@+id/all_apps_2d_home"
         android:nextFocusUp="@null"
@@ -49,7 +49,7 @@
         android:id="@+id/all_apps_2d_home"
         android:tag="all_apps_2d_home"
         android:src="@drawable/home_button"
-        android:background="#00000000"
+        android:background="#FF000000"
         android:layout_centerHorizontal="true"
         android:layout_alignParentBottom="true"
         android:layout_width="wrap_content"
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 26cb7e6..790f835 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -24,6 +24,10 @@
          button_bar_height changes -->
     <dimen name="button_bar_height_portrait">56dip</dimen>
 
+    <!-- roughly a status bar (for vertically centering the all apps
+         home icon in landscape) -->
+    <dimen name="status_bar_height">25dip</dimen>
+
     <!-- roughly half a status bar (for vertically centering the right-hand
          button cluster in landscape) -->
     <dimen name="half_status_bar_height">12dip</dimen>
diff --git a/src/com/android/launcher2/AllApps2D.java b/src/com/android/launcher2/AllApps2D.java
index 90c87fb..86571cf 100644
--- a/src/com/android/launcher2/AllApps2D.java
+++ b/src/com/android/launcher2/AllApps2D.java
@@ -20,6 +20,8 @@
 import android.content.Context;
 import android.content.res.Resources;
 import android.graphics.drawable.BitmapDrawable;
+import android.graphics.Bitmap;
+import android.graphics.Color;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.view.KeyEvent;
@@ -49,6 +51,7 @@
                    DragSource {
 
     private static final String TAG = "Launcher.AllApps2D";
+    private static final boolean DEBUG = false;
 
     private Launcher mLauncher;
     private DragController mDragController;
@@ -100,7 +103,13 @@
 //            }
 
             final TextView textView = (TextView) convertView;
+            if (DEBUG) {
+                Log.d(TAG, "icon bitmap = " + info.iconBitmap 
+                    + " density = " + info.iconBitmap.getDensity());
+            }
+            info.iconBitmap.setDensity(Bitmap.DENSITY_NONE);
             textView.setCompoundDrawablesWithIntrinsicBounds(null, new BitmapDrawable(info.iconBitmap), null, null);
+            textView.setBackgroundColor(Color.BLACK);
             textView.setText(info.title);
 
             return convertView;
@@ -118,13 +127,15 @@
 
     @Override
     protected void onFinishInflate() {
-        setBackgroundColor(0xFF000000);
+        setBackgroundColor(Color.BLACK);
 
         try {
             mGrid = (GridView)findViewWithTag("all_apps_2d_grid");
             if (mGrid == null) throw new Resources.NotFoundException();
             mGrid.setOnItemClickListener(this);
             mGrid.setOnItemLongClickListener(this);
+            mGrid.setBackgroundColor(Color.BLACK);
+            mGrid.setCacheColorHint(Color.BLACK);
             
             ImageButton homeButton = (ImageButton) findViewWithTag("all_apps_2d_home");
             if (homeButton == null) throw new Resources.NotFoundException();
diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java
index 26671ad..d2cebc0 100644
--- a/src/com/android/launcher2/LauncherModel.java
+++ b/src/com/android/launcher2/LauncherModel.java
@@ -672,6 +672,10 @@
 
             // check & update map of what's occupied; used to discard overlapping/invalid items
             private boolean checkItemPlacement(ItemInfo occupied[][][], ItemInfo item) {
+                if (item.container != LauncherSettings.Favorites.CONTAINER_DESKTOP) {
+                    return true;
+                }
+
                 for (int x = item.cellX; x < (item.cellX+item.spanX); x++) {
                     for (int y = item.cellY; y < (item.cellY+item.spanY); y++) {
                         if (occupied[item.screen][x][y] != null) {
