diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 4a65bc9..034e4a3 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -346,6 +346,7 @@
     <dimen name="homepage_card_icon_padding_start">14dp</dimen>
     <dimen name="homepage_card_text_padding_start">16dp</dimen>
     <dimen name="homepage_card_padding_end">16dp</dimen>
+    <dimen name="homepage_card_corner_radius">@*android:dimen/config_dialogCornerRadius</dimen>
     <dimen name="homepage_full_card_padding_end">12dp</dimen>
     <dimen name="homepage_half_card_padding_top">12dp</dimen>
     <dimen name="homepage_half_card_padding_bottom">16dp</dimen>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 02db995..8cd22fe 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -418,7 +418,7 @@
         <item name="android:layout_marginStart">@dimen/homepage_card_side_margin</item>
         <item name="android:layout_marginEnd">@dimen/homepage_card_side_margin</item>
         <item name="cardBackgroundColor">@color/contextual_card_background</item>
-        <item name="cardCornerRadius">@*android:dimen/config_dialogCornerRadius</item>
+        <item name="cardCornerRadius">@dimen/homepage_card_corner_radius</item>
         <item name="cardElevation">0dp</item>
         <item name="strokeColor">@color/homepage_card_stroke_color</item>
         <item name="strokeWidth">1dp</item>
diff --git a/src/com/android/settings/homepage/contextualcards/slices/SwipeDismissalDelegate.java b/src/com/android/settings/homepage/contextualcards/slices/SwipeDismissalDelegate.java
index 121d4aa..3564189 100644
--- a/src/com/android/settings/homepage/contextualcards/slices/SwipeDismissalDelegate.java
+++ b/src/com/android/settings/homepage/contextualcards/slices/SwipeDismissalDelegate.java
@@ -18,6 +18,10 @@
 
 import android.content.Context;
 import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.RectF;
+import android.graphics.drawable.Drawable;
+import android.view.View;
 import android.widget.ViewFlipper;
 
 import androidx.annotation.NonNull;
@@ -29,7 +33,7 @@
 
 public class SwipeDismissalDelegate extends ItemTouchHelper.Callback {
 
-    private static final String TAG = "DismissItemTouchHelper";
+    private static final String TAG = "SwipeDismissalDelegate";
 
     public interface Listener {
         void onSwiped(int position);
@@ -37,10 +41,18 @@
 
     private final Context mContext;
     private final SwipeDismissalDelegate.Listener mListener;
+    private final Drawable mIconDelete;
+    private final Paint mBgPaint;
+    private final int mBgCornerRadius;
 
     public SwipeDismissalDelegate(Context context, SwipeDismissalDelegate.Listener listener) {
         mContext = context;
         mListener = listener;
+        mIconDelete = mContext.getDrawable(R.drawable.ic_delete);
+        mBgPaint = new Paint();
+        mBgPaint.setColor(mContext.getColor(R.color.homepage_card_dismissal_background));
+        mBgCornerRadius = mContext.getResources()
+                .getDimensionPixelSize(R.dimen.homepage_card_corner_radius);
     }
 
     /**
@@ -93,6 +105,30 @@
             @NonNull RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState,
             boolean isCurrentlyActive) {
         super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
+
+        final View itemView = viewHolder.itemView;
+        final int iconMargin = mContext.getResources()
+                .getDimensionPixelSize(R.dimen.homepage_card_dismissal_side_margin);
+        final int iconTop =
+                itemView.getTop() + (itemView.getHeight() - mIconDelete.getIntrinsicHeight()) / 2;
+        final int iconBottom = iconTop + mIconDelete.getIntrinsicHeight();
+
+        if (dX > 0) { //swipe to the right
+            final int iconLeft = itemView.getLeft() + iconMargin;
+            final int iconRight = iconLeft + mIconDelete.getIntrinsicWidth();
+            final RectF rect = new RectF(itemView.getLeft(), itemView.getTop(),
+                    itemView.getLeft() + ((int) dX) + mBgCornerRadius, itemView.getBottom());
+            mIconDelete.setBounds(iconLeft, iconTop, iconRight, iconBottom);
+            c.drawRoundRect(rect, mBgCornerRadius, mBgCornerRadius, mBgPaint);
+        } else if (dX < 0) {
+            final int iconRight = itemView.getRight() - iconMargin;
+            final int iconLeft = iconRight - mIconDelete.getIntrinsicWidth();
+            final RectF rect = new RectF(itemView.getRight() + ((int) dX), itemView.getTop(),
+                    itemView.getRight(), itemView.getBottom());
+            mIconDelete.setBounds(iconLeft, iconTop, iconRight, iconBottom);
+            c.drawRoundRect(rect, mBgCornerRadius, mBgCornerRadius, mBgPaint);
+        }
+        mIconDelete.draw(c);
     }
 
     private int getInitialViewId(RecyclerView.ViewHolder viewHolder) {
