diff --git a/res/layout/fragment_live_preview_v2.xml b/res/layout/fragment_live_preview_v2.xml
index 8220c1b..227aef4 100644
--- a/res/layout/fragment_live_preview_v2.xml
+++ b/res/layout/fragment_live_preview_v2.xml
@@ -35,16 +35,16 @@
             android:layout_width="match_parent"
             android:layout_height="@dimen/live_preview_card_height"
             android:background="@color/preview_pager_background"
-            android:paddingTop="@dimen/live_preview_card_padding_top"
-            android:paddingBottom="@dimen/live_preview_card_padding_bottom" />
+            android:paddingTop="@dimen/full_preview_page_default_padding_top"
+            android:paddingBottom="@dimen/full_preview_page_default_padding_bottom" />
 
         <include
             android:id="@+id/permission_needed"
             layout="@layout/grid_item_permission_needed"
             android:layout_width="match_parent"
             android:layout_height="@dimen/live_preview_card_height"
-            android:paddingTop="@dimen/live_preview_card_padding_top"
-            android:paddingBottom="@dimen/live_preview_card_padding_bottom"
+            android:paddingTop="@dimen/full_preview_page_default_padding_top"
+            android:paddingBottom="@dimen/full_preview_page_default_padding_bottom"
             android:visibility="gone" />
     </androidx.coordinatorlayout.widget.CoordinatorLayout>
 
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 5ececef..ce07e6c 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -207,9 +207,12 @@
     <!-- The maximum height ratio of PreviewPager and its parent view. -->
     <item name="preview_pager_maximum_height_ratio" format="float" type="dimen">0.7</item>
 
-    <!-- Dimensions for live wallpaper preview -->
-    <dimen name="live_preview_card_padding_top">24dp</dimen>
-    <dimen name="live_preview_card_padding_bottom">24dp</dimen>
+    <!-- Dimensions for full preview page -->
+    <dimen name="full_preview_page_default_padding_top">24dp</dimen>
+    <dimen name="full_preview_page_default_padding_bottom">32dp</dimen>
+    <dimen name="full_preview_page_editing_padding_bottom">0dp</dimen>
+
+    <!-- Dimensions for full preview page -->
     <dimen name="live_preview_card_height">690dp</dimen>
 
     <!-- Dimensions for the bottom bar. -->
diff --git a/src/com/android/wallpaper/picker/CategoryFragment.java b/src/com/android/wallpaper/picker/CategoryFragment.java
index 396d3ed..de50d4f 100755
--- a/src/com/android/wallpaper/picker/CategoryFragment.java
+++ b/src/com/android/wallpaper/picker/CategoryFragment.java
@@ -651,11 +651,11 @@
      * Returns the width to use for the home screen wallpaper in the "single metadata" configuration.
      */
     private int getSingleWallpaperImageWidth() {
-        Point screenSize = ScreenSizeCalculator.getInstance()
-                .getScreenSize(getActivity().getWindowManager().getDefaultDisplay());
-
-        int height = getResources().getDimensionPixelSize(R.dimen.single_metadata_card_layout_height);
-        return height * screenSize.x / screenSize.y;
+        final float screenAspectRatio =
+                ScreenSizeCalculator.getInstance().getScreenAspectRatio(getContext());
+        int height = getResources().getDimensionPixelSize(
+                R.dimen.single_metadata_card_layout_height);
+        return (int) (height / screenAspectRatio);
     }
 
     /**
diff --git a/src/com/android/wallpaper/picker/ImagePreviewFragment.java b/src/com/android/wallpaper/picker/ImagePreviewFragment.java
index 62578b1..d5eec54 100755
--- a/src/com/android/wallpaper/picker/ImagePreviewFragment.java
+++ b/src/com/android/wallpaper/picker/ImagePreviewFragment.java
@@ -506,8 +506,9 @@
             int containerWidth = mWorkspaceContainer.getMeasuredWidth();
             int containerHeight = mWorkspaceContainer.getMeasuredHeight();
 
-            int topPadding = dpToPx(24, mDisplayMetrics.density);
-            int bottomPadding = dpToPx(getBottomPaddingInDp(), mDisplayMetrics.density);
+            int topPadding = getResources().getDimensionPixelSize(
+                    R.dimen.full_preview_page_default_padding_top);
+            int bottomPadding = getBottomPaddingInDp();
             double horizontalPadding = containerWidth
                     - (containerHeight - topPadding - bottomPadding) * 1.0
                             * mDisplayMetrics.widthPixels / mDisplayMetrics.heightPixels;
@@ -524,10 +525,12 @@
     private int getBottomPaddingInDp() {
         switch (mMode) {
             case MODE_EDITING:
-                return 0;
+                return getResources().getDimensionPixelSize(
+                        R.dimen.full_preview_page_editing_padding_bottom);
             case MODE_DEFAULT:
             default:
-                return 32;
+                return getResources().getDimensionPixelSize(
+                        R.dimen.full_preview_page_default_padding_bottom);
         }
     }
 
@@ -537,8 +540,4 @@
         mMode = enabled ? MODE_EDITING : MODE_DEFAULT;
         mTabs.setVisibility(mMode == MODE_EDITING ? View.VISIBLE : View.GONE);
     }
-
-    private static int dpToPx(int dp, float density) {
-        return (int) (dp * density + 0.5f);
-    }
 }
diff --git a/src/com/android/wallpaper/picker/TopLevelPickerActivity.java b/src/com/android/wallpaper/picker/TopLevelPickerActivity.java
index b513dc2..4284de3 100755
--- a/src/com/android/wallpaper/picker/TopLevelPickerActivity.java
+++ b/src/com/android/wallpaper/picker/TopLevelPickerActivity.java
@@ -21,7 +21,6 @@
 import android.content.Intent;
 import android.graphics.Color;
 import android.graphics.Insets;
-import android.graphics.Point;
 import android.graphics.PorterDuff.Mode;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
@@ -441,12 +440,12 @@
      * Returns the width (in physical px) to use for the "currently set wallpaper" thumbnail.
      */
     private int getSingleWallpaperImageWidthPx() {
-        Point screenSize = ScreenSizeCalculator.getInstance().getScreenSize(
-                getWindowManager().getDefaultDisplay());
+        final float screenAspectRatio =
+                ScreenSizeCalculator.getInstance().getScreenAspectRatio(this);
 
         int height = getResources().getDimensionPixelSize(
                 R.dimen.current_wallpaper_bottom_sheet_thumb_height);
-        return height * screenSize.x / screenSize.y;
+        return (int) (height / screenAspectRatio);
     }
 
     /**
diff --git a/src/com/android/wallpaper/util/ScreenSizeCalculator.java b/src/com/android/wallpaper/util/ScreenSizeCalculator.java
index d55cf99..d206e55 100755
--- a/src/com/android/wallpaper/util/ScreenSizeCalculator.java
+++ b/src/com/android/wallpaper/util/ScreenSizeCalculator.java
@@ -15,6 +15,7 @@
  */
 package com.android.wallpaper.util;
 
+import android.content.Context;
 import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.graphics.Point;
@@ -22,6 +23,7 @@
 import android.os.Build.VERSION_CODES;
 import android.util.Log;
 import android.view.Display;
+import android.view.WindowManager;
 
 /**
  * Calculates the size of the device's screen.
@@ -70,6 +72,17 @@
         }
     }
 
+    /**
+     * Calculates the device's aspect ratio (height/width).
+     *
+     * Note: The screen size is getting from {@link #getScreenSize}.
+     */
+    public float getScreenAspectRatio(Context context) {
+        final WindowManager windowManager = context.getSystemService(WindowManager.class);
+        final Point screenSize = getScreenSize(windowManager.getDefaultDisplay());
+        return (float) screenSize.y / screenSize.x;
+    }
+
     private Point getPortraitScreenSize(Display display) {
         if (mPortraitScreenSize == null) {
             mPortraitScreenSize = new Point();
diff --git a/src/com/android/wallpaper/widget/WallpaperPreviewCard.java b/src/com/android/wallpaper/widget/WallpaperPreviewCard.java
index e57d946..7546aa2 100644
--- a/src/com/android/wallpaper/widget/WallpaperPreviewCard.java
+++ b/src/com/android/wallpaper/widget/WallpaperPreviewCard.java
@@ -16,10 +16,8 @@
 package com.android.wallpaper.widget;
 
 import android.content.Context;
-import android.graphics.Point;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
-import android.view.WindowManager;
 import android.widget.LinearLayout;
 
 import com.android.wallpaper.R;
@@ -43,10 +41,7 @@
     public WallpaperPreviewCard(Context context, AttributeSet attrs, int defStyleAttr) {
         super(context, attrs, defStyleAttr);
         LayoutInflater.from(context).inflate(R.layout.wallpaper_preview_card_layout, this);
-        WindowManager windowManager = getContext().getSystemService(WindowManager.class);
-        Point screenSize = ScreenSizeCalculator.getInstance()
-                .getScreenSize(windowManager.getDefaultDisplay());
-        mScreenAspectRatio = (float) screenSize.y / screenSize.x;
+        mScreenAspectRatio = ScreenSizeCalculator.getInstance().getScreenAspectRatio(getContext());
     }
 
     @Override
