diff --git a/res/drawable/ic_check_circle_filled_24px.xml b/res/drawable/ic_check_circle_filled_24px.xml
new file mode 100644
index 0000000..cacf1d8
--- /dev/null
+++ b/res/drawable/ic_check_circle_filled_24px.xml
@@ -0,0 +1,28 @@
+<!--
+     Copyright (C) 2019 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:fillColor="@color/selected_check_background_color"
+      android:pathData="M12,2C6.5,2 2,6.5 2,12s4.5,10 10,10s10,-4.5 10,-10S17.5,2 12,2zM10,17l-4,-4l1.4,-1.4l2.6,2.6l6.6,-6.6L18,9L10,17z"/>
+  <path
+      android:pathData="m8.0085,14.9866 l-1.9939,-1.994 0.6892,-0.6889 0.6892,-0.6889 1.2925,1.2926c0.7109,0.711 1.3035,1.2926 1.3169,1.2926 0.0134,0 1.5034,-1.4789 3.3111,-3.2865l3.2866,-3.2865 0.689,0.689 0.689,0.689 -3.9878,3.9878 -3.9878,3.9878z"
+      android:strokeWidth="0.02439024"
+      android:fillColor="@color/selected_check_color"/>
+</vector>
diff --git a/res/drawable/ic_tune_24px.xml b/res/drawable/ic_tune.xml
similarity index 94%
rename from res/drawable/ic_tune_24px.xml
rename to res/drawable/ic_tune.xml
index abad67c..a6dd634 100644
--- a/res/drawable/ic_tune_24px.xml
+++ b/res/drawable/ic_tune.xml
@@ -14,8 +14,8 @@
      limitations under the License.
 -->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
+    android:width="20dp"
+    android:height="20dp"
     android:viewportWidth="24"
     android:viewportHeight="24">
   <path
diff --git a/res/layout/preview_card_cover_content.xml b/res/layout/preview_card_cover_content.xml
index 408fadc..aa20204 100644
--- a/res/layout/preview_card_cover_content.xml
+++ b/res/layout/preview_card_cover_content.xml
@@ -27,8 +27,7 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_weight="0"
-        android:layout_marginTop="40dp"
-        android:layout_marginBottom="36dp"
+        android:layout_marginBottom="24dp"
         android:gravity="center|bottom"
         android:orientation="horizontal">
         <FrameLayout
diff --git a/res/layout/theme_preview_card.xml b/res/layout/theme_preview_card.xml
index deccd48..d8cb8a9 100644
--- a/res/layout/theme_preview_card.xml
+++ b/res/layout/theme_preview_card.xml
@@ -32,7 +32,8 @@
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="match_parent"
-            android:padding="@dimen/preview_card_padding"
+            android:paddingTop="@dimen/preview_card_padding"
+            android:paddingHorizontal="@dimen/preview_card_padding"
             android:orientation="vertical">
 
             <ViewStub
@@ -42,19 +43,23 @@
                 android:layout_height="wrap_content"
                 android:layout_marginBottom="20dp"/>
 
-            <TextView
+              <TextView
                 android:id="@+id/theme_preview_card_header"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_gravity="center_horizontal"
-                android:layout_marginBottom="48dp"
                 android:drawablePadding="10dp"
                 android:textAppearance="@style/CardTitleTextAppearance"/>
 
+            <Space
+                android:layout_width="match_parent"
+                android:layout_height="0dp"
+                android:layout_weight="1" />
+
             <FrameLayout
                 android:id="@+id/theme_preview_card_body_container"
                 android:layout_width="match_parent"
-                android:layout_height="0dp"
+                android:layout_height="wrap_content"
                 android:layout_marginHorizontal="8dp"
                 android:layout_weight="1"/>
 
@@ -63,7 +68,7 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_gravity="center_horizontal"
-                android:drawableStart="@drawable/ic_tune_24px"
+                android:drawableStart="@drawable/ic_tune"
                 android:drawablePadding="8dp"
                 android:gravity="center"
                 android:text="@string/edit_custom_theme_lbl"
diff --git a/res/values-night/colors.xml b/res/values-night/colors.xml
index edd414d..c5e81b2 100644
--- a/res/values-night/colors.xml
+++ b/res/values-night/colors.xml
@@ -31,6 +31,9 @@
     <color name="tip_dot_color">#81C995</color>
     <color name="tip_dot_line_color">#000000</color>
 
+    <color name="selected_check_color">#000000</color>
+    <color name="selected_check_background_color">#81C995</color>
+
     <color name="toolbar_icon_color">@color/text_color_light</color>
     <color name="toolbar_color">#000000</color>
 </resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 8e30525..d45a4d7 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -48,6 +48,9 @@
     <color name="tip_dot_color">#34A853</color>
     <color name="tip_dot_line_color">#FFFFFF</color>
 
+    <color name="selected_check_color">#FFFFFF</color>
+    <color name="selected_check_background_color">#1E8E3E</color>
+
     <color name="toolbar_icon_color">@color/text_color_dark</color>
     <color name="toolbar_color">@color/material_white_100</color>
 </resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index b36bb13..465a926 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -22,6 +22,8 @@
     <dimen name="tip_dot_size">8dp</dimen>
     <dimen name="tip_dot_line_width">2dp</dimen>
 
+    <dimen name="check_size">12dp</dimen>
+
     <dimen name="preview_indicator_width">16dp</dimen>
     <dimen name="preview_indicator_height">8dp</dimen>
     <dimen name="indicator_container_height">48dp</dimen>
@@ -59,7 +61,7 @@
     <dimen name="theme_option_label_margin">4dp</dimen>
 
     <dimen name="preview_card_corner_radius">8dp</dimen>
-    <dimen name="preview_card_padding">24dp</dimen>
+    <dimen name="preview_card_padding">16dp</dimen>
 
     <dimen name="card_title_text_size">16sp</dimen>
     <dimen name="card_cover_title_text_size">24sp</dimen>
diff --git a/src/com/android/customization/model/theme/ThemeBundle.java b/src/com/android/customization/model/theme/ThemeBundle.java
index 370a72a..414719e 100644
--- a/src/com/android/customization/model/theme/ThemeBundle.java
+++ b/src/com/android/customization/model/theme/ThemeBundle.java
@@ -45,7 +45,6 @@
 
 import com.android.customization.model.CustomizationManager;
 import com.android.customization.model.CustomizationOption;
-import com.android.customization.model.theme.custom.CustomTheme;
 import com.android.customization.widget.DynamicAdaptiveIconDrawable;
 import com.android.wallpaper.R;
 import com.android.wallpaper.asset.Asset;
@@ -109,7 +108,7 @@
                     mPreviewInfo.shapeDrawable);
         }
         if (!mPreviewInfo.icons.isEmpty()) {
-            Drawable icon = mPreviewInfo.icons.get(0).mutate();
+            Drawable icon = mPreviewInfo.icons.get(0).getConstantState().newDrawable().mutate();
             icon.setTint(res.getColor(R.color.icon_thumbnail_color, null));
             ((ImageView) view.findViewById(R.id.theme_option_icon)).setImageDrawable(
                     icon);
diff --git a/src/com/android/customization/picker/theme/ThemeFragment.java b/src/com/android/customization/picker/theme/ThemeFragment.java
index 4deb198..7f6754f 100644
--- a/src/com/android/customization/picker/theme/ThemeFragment.java
+++ b/src/com/android/customization/picker/theme/ThemeFragment.java
@@ -262,6 +262,9 @@
                 // Select the default theme if there is no matching custom enabled theme
                 // TODO(b/124796742): default to custom if there is no matching theme bundle
                 mSelectedTheme = options.get(0);
+            } else {
+                // Only show show checkmark if we found a matching theme
+                mOptionsController.setAppliedOption(mSelectedTheme);
             }
             mOptionsController.setSelectedOption(mSelectedTheme);
         }, false);
@@ -280,6 +283,9 @@
                 // Select the default theme if there is no matching custom enabled theme
                 // TODO(b/124796742): default to custom if there is no matching theme bundle
                 mSelectedTheme = options.get(0);
+            } else {
+                // Only show show checkmark if we found a matching theme
+                mOptionsController.setAppliedOption(mSelectedTheme);
             }
             mOptionsController.setSelectedOption(mSelectedTheme);
         }, true);
@@ -378,7 +384,8 @@
             ViewGroup iconsContainer = card.findViewById(R.id.theme_preview_top_bar_icons);
 
             for (int i = 0; i < iconsContainer.getChildCount() && i < mIcons.size(); i++) {
-                ((ImageView)iconsContainer.getChildAt(i)).setImageDrawable(mIcons.get(i));
+                ((ImageView) iconsContainer.getChildAt(i))
+                        .setImageDrawable(mIcons.get(i).getConstantState().newDrawable().mutate());
             }
 
             ViewGroup body = card.findViewById(R.id.theme_preview_card_body_container);
@@ -497,7 +504,7 @@
                     }
                     for (int i = 0; i < 3 && i < previewInfo.icons.size(); i++) {
                         Drawable icon =
-                                previewInfo.icons.get(i).getConstantState().newDrawable();
+                                previewInfo.icons.get(i).getConstantState().newDrawable().mutate();
                         Drawable bgShape =
                                 previewInfo.shapeDrawable.getConstantState().newDrawable();
                         bgShape.setTint(accentColor);
@@ -542,8 +549,9 @@
                     @Override
                     protected void bindBody(boolean forceRebind) {
                         for (int i = 0; i < mIconIds.length && i < previewInfo.icons.size(); i++) {
-                            ((ImageView) card.findViewById(mIconIds[i])).setImageDrawable(
-                                    previewInfo.icons.get(i));
+                            ((ImageView) card.findViewById(mIconIds[i]))
+                                    .setImageDrawable(previewInfo.icons.get(i)
+                                            .getConstantState().newDrawable().mutate());
                         }
                     }
                 });
@@ -595,10 +603,10 @@
 
                         for (int i = 0; i < mColorTileIds.length && i < previewInfo.icons.size();
                                 i++) {
-                            Drawable icon =
-                                previewInfo.icons.get(i).getConstantState().newDrawable();
+                            Drawable icon = previewInfo.icons.get(i)
+                                    .getConstantState().newDrawable().mutate();
                             Drawable bgShape =
-                                previewInfo.shapeDrawable.getConstantState().newDrawable();
+                                    previewInfo.shapeDrawable.getConstantState().newDrawable();
                             bgShape.setTint(accentColor);
 
                             ImageView bg = card.findViewById(mColorTileIds[i]);
diff --git a/src/com/android/customization/widget/OptionSelectorController.java b/src/com/android/customization/widget/OptionSelectorController.java
index fe04d20..615d7d8 100644
--- a/src/com/android/customization/widget/OptionSelectorController.java
+++ b/src/com/android/customization/widget/OptionSelectorController.java
@@ -16,6 +16,9 @@
 package com.android.customization.widget;
 
 import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.LayerDrawable;
+import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -58,6 +61,7 @@
     private final Set<OptionSelectedListener> mListeners = new HashSet<>();
     private RecyclerView.Adapter<TileViewHolder> mAdapter;
     private CustomizationOption mSelectedOption;
+    private CustomizationOption mAppliedOption;
 
     public OptionSelectorController(RecyclerView container, List<T> options) {
         mContainer = container;
@@ -82,6 +86,18 @@
         notifyListeners();
     }
 
+    /**
+     * Mark an option as the one which is currently applied on the device. This will result in a
+     * check being displayed in the lower-right corner of the corresponding ViewHolder.
+     * @param option
+     */
+    public void setAppliedOption(CustomizationOption option) {
+        if (!mOptions.contains(option)) {
+            throw new IllegalArgumentException("Invalid option");
+        }
+        mAppliedOption = option;
+    }
+
     private void updateActivatedStatus(CustomizationOption option, boolean isActivated) {
         int index = mOptions.indexOf(option);
         if (index < 0) {
@@ -115,6 +131,7 @@
                 CustomizationOption option = mOptions.get(position);
                 if (mSelectedOption == null && option.isActive(manager)) {
                     mSelectedOption = option;
+                    mAppliedOption = option;
                 }
                 if (holder.labelView != null) {
                     holder.labelView.setText(option.getTitle());
@@ -122,6 +139,27 @@
                 option.bindThumbnailTile(holder.tileView);
                 holder.itemView.setActivated(option.equals(mSelectedOption));
                 holder.itemView.setOnClickListener(view -> setSelectedOption(option));
+
+                if (option.equals(mAppliedOption)) {
+                    Resources res = mContainer.getContext().getResources();
+                    Drawable checkmark = res.getDrawable(R.drawable.ic_check_circle_filled_24px);
+                    Drawable frame = holder.itemView.getForeground();
+                    Drawable[] layers = {frame, checkmark};
+                    if (frame == null) {
+                        layers = new Drawable[]{checkmark};
+                    }
+                    LayerDrawable checkedFrame = new LayerDrawable(layers);
+
+                    // Position at lower right
+                    int idx = layers.length - 1;
+                    int checkSize = (int) res.getDimension(R.dimen.check_size);
+                    checkedFrame.setLayerGravity(idx, Gravity.BOTTOM | Gravity.RIGHT);
+                    checkedFrame.setLayerWidth(idx, checkSize);
+                    checkedFrame.setLayerHeight(idx, checkSize);
+                    checkedFrame.setLayerInsetBottom(idx, checkSize/2);
+                    checkedFrame.setLayerInsetLeft(idx, checkSize/2);
+                    holder.itemView.setForeground(checkedFrame);
+                }
             }
 
             @Override
