diff --git a/src/com/android/dialer/list/ShortcutCardsAdapter.java b/src/com/android/dialer/list/ShortcutCardsAdapter.java
index 2ce7ea4..128871d 100644
--- a/src/com/android/dialer/list/ShortcutCardsAdapter.java
+++ b/src/com/android/dialer/list/ShortcutCardsAdapter.java
@@ -213,6 +213,9 @@
         private SwipeHelper mSwipeHelper;
         private OnItemGestureListener mOnItemSwipeListener;
 
+        private float mPreviousTranslationZ = 0;
+        private Rect mClipRect = new Rect();
+
         public SwipeableShortcutCard(Context context) {
             super(context);
             final float densityScale = getResources().getDisplayMetrics().density;
@@ -244,8 +247,9 @@
                     actionView.getPaddingEnd(),
                     mCallLogPaddingBottom);
 
-            view.setTranslationZ(getResources().getDimensionPixelSize(
-                    R.dimen.recent_call_log_item_translation_z));
+            mPreviousTranslationZ = getResources().getDimensionPixelSize(
+                    R.dimen.recent_call_log_item_translation_z);
+            view.setTranslationZ(mPreviousTranslationZ);
 
             super.addView(view);
         }
@@ -307,9 +311,6 @@
             mOnItemSwipeListener = listener;
         }
 
-        private float mPreviousTranslationZ = 0;
-        private Rect mClipRect = new Rect();
-
         /**
          * Clips the card by a specified amount.
          *
@@ -325,7 +326,7 @@
             int width = viewToClip.getWidth();
             int height = viewToClip.getHeight();
 
-            if (ratioHidden <= 0.01f) {
+            if (ratioHidden <= 0.001f) {
                 viewToClip.setTranslationZ(mPreviousTranslationZ);
             } else if (viewToClip.getTranslationZ() != 0){
                 mPreviousTranslationZ = viewToClip.getTranslationZ();
