diff --git a/res/drawable-hdpi/preview_popup.9.png b/res/drawable-hdpi/preview_popup.9.png
index 987f571..6eeddb2 100644
--- a/res/drawable-hdpi/preview_popup.9.png
+++ b/res/drawable-hdpi/preview_popup.9.png
Binary files differ
diff --git a/src/com/android/launcher2/CellLayout.java b/src/com/android/launcher2/CellLayout.java
index 015f187..05fc20c 100644
--- a/src/com/android/launcher2/CellLayout.java
+++ b/src/com/android/launcher2/CellLayout.java
@@ -444,6 +444,22 @@
         return mCellHeight;
     }
 
+    int getLeftPadding() {
+        return mPortrait ? mShortAxisStartPadding : mLongAxisStartPadding;
+    }
+
+    int getTopPadding() {
+        return mPortrait ? mLongAxisStartPadding : mShortAxisStartPadding;        
+    }
+
+    int getRightPadding() {
+        return mPortrait ? mShortAxisEndPadding : mLongAxisEndPadding;
+    }
+
+    int getBottomPadding() {
+        return mPortrait ? mLongAxisEndPadding : mShortAxisEndPadding;        
+    }
+
     @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
         // TODO: currently ignoring padding
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index e7a4a3c..a2a3e9a 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -40,6 +40,7 @@
 import android.database.ContentObserver;
 import android.graphics.Bitmap;
 import android.graphics.Rect;
+import android.graphics.Matrix;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.os.Handler;
@@ -1562,8 +1563,21 @@
         Bitmap cache = source.getDrawingCache();
         if (cache == null) return;
 
-        Bitmap bitmap = Bitmap.createScaledBitmap(cache,
-                (int) (cache.getWidth() / 2.5f), (int) (cache.getHeight() / 2.5f), true);
+        int width = cache.getWidth();
+        int height = cache.getHeight();
+        float sx = (int) (width / 2.5f) / (float) width;
+        float sy = (int) (height / 2.5f) / (float) height;
+
+        Matrix m = new Matrix();
+        m.setScale(sx, sy);
+
+        CellLayout cell = ((CellLayout) source);
+        int x = cell.getLeftPadding();
+        int y = cell.getTopPadding();
+        width -= (x + cell.getRightPadding());
+        height -= (y + cell.getBottomPadding());
+
+        Bitmap bitmap = Bitmap.createBitmap(cache, x, y, width, height, m, true);
 
         ImageView preview = new ImageView(this);
         preview.setImageBitmap(bitmap);
