diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index adf0fda..ab29523 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -64,13 +64,15 @@
 
     <!-- Dimensions for most recent call shortcut cards -->
     <dimen name="recent_call_log_item_translation_z">4dp</dimen>
-    <dimen name="recent_call_log_item_margin">8dp</dimen>
+    <dimen name="recent_call_log_item_margin_horizontal">8dp</dimen>
+    <dimen name="recent_call_log_item_margin_top">4dp</dimen>
     <dimen name="recent_call_log_item_margin_bottom">6dp</dimen>
 
     <!-- The maximum amount to clip on the left and right of the recent call shortcut card -->
     <dimen name="recent_call_log_item_horizontal_clip_limit">20dp</dimen>
     <dimen name="recent_call_log_item_padding_start">8dp</dimen>
-    <dimen name="recent_call_log_item_padding_bottom">7dp</dimen>
+    <dimen name="recent_call_log_item_padding_top">12dp</dimen>
+    <dimen name="recent_call_log_item_padding_bottom">11dp</dimen>
 
     <!-- Size of the star icon on the favorites tile. -->
     <dimen name="favorites_star_icon_size">12dp</dimen>
diff --git a/src/com/android/dialer/list/ShortcutCardsAdapter.java b/src/com/android/dialer/list/ShortcutCardsAdapter.java
index a39bed5..2ce7ea4 100644
--- a/src/com/android/dialer/list/ShortcutCardsAdapter.java
+++ b/src/com/android/dialer/list/ShortcutCardsAdapter.java
@@ -55,9 +55,11 @@
 
     private final ListsFragment mFragment;
 
-    private final int mCallLogMargin;
+    private final int mCallLogMarginHorizontal;
+    private final int mCallLogMarginTop;
     private final int mCallLogMarginBottom;
     private final int mCallLogPaddingStart;
+    private final int mCallLogPaddingTop;
     private final int mCallLogPaddingBottom;
     private final int mCardMaxHorizontalClip;
 
@@ -106,13 +108,18 @@
         final Resources resources = context.getResources();
         mContext = context;
         mFragment = fragment;
-        mCardMaxHorizontalClip = resources.getDimensionPixelSize(
-                R.dimen.recent_call_log_item_horizontal_clip_limit);
-        mCallLogMargin = resources.getDimensionPixelSize(R.dimen.recent_call_log_item_margin);
+        mCardMaxHorizontalClip =
+                resources.getDimensionPixelSize(R.dimen.recent_call_log_item_horizontal_clip_limit);
+        mCallLogMarginHorizontal =
+                resources.getDimensionPixelSize(R.dimen.recent_call_log_item_margin_horizontal);
+        mCallLogMarginTop =
+                resources.getDimensionPixelSize(R.dimen.recent_call_log_item_margin_top);
         mCallLogMarginBottom =
                 resources.getDimensionPixelSize(R.dimen.recent_call_log_item_margin_bottom);
         mCallLogPaddingStart =
                 resources.getDimensionPixelSize(R.dimen.recent_call_log_item_padding_start);
+        mCallLogPaddingTop =
+                resources.getDimensionPixelSize(R.dimen.recent_call_log_item_padding_top);
         mCallLogPaddingBottom =
                 resources.getDimensionPixelSize(R.dimen.recent_call_log_item_padding_bottom);
 
@@ -222,14 +229,20 @@
             final FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
                     FrameLayout.LayoutParams.MATCH_PARENT,
                     FrameLayout.LayoutParams.WRAP_CONTENT);
-            params.setMargins(mCallLogMargin, mCallLogMargin, mCallLogMargin, mCallLogMarginBottom);
+            params.setMargins(
+                    mCallLogMarginHorizontal,
+                    mCallLogMarginTop,
+                    mCallLogMarginHorizontal,
+                    mCallLogMarginBottom);
             view.setLayoutParams(params);
 
             LinearLayout actionView =
                     (LinearLayout)view.findViewById(R.id.primary_action_view);
             actionView.setPaddingRelative(
-                    mCallLogPaddingStart, actionView.getPaddingTop(),
-                    actionView.getPaddingEnd(), mCallLogPaddingBottom);
+                    mCallLogPaddingStart,
+                    mCallLogPaddingTop,
+                    actionView.getPaddingEnd(),
+                    mCallLogPaddingBottom);
 
             view.setTranslationZ(getResources().getDimensionPixelSize(
                     R.dimen.recent_call_log_item_translation_z));
