diff --git a/res/drawable/theme_cover_scrim.xml b/res/drawable/theme_cover_scrim.xml
new file mode 100644
index 0000000..029ea85
--- /dev/null
+++ b/res/drawable/theme_cover_scrim.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+     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.
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+       android:shape="rectangle">
+    <gradient
+        android:angle="90"
+        android:startColor="@android:color/transparent"
+        android:centerColor="@android:color/transparent"
+        android:endColor="@color/translucent_black_darker"
+        android:type="linear" />
+</shape>
\ No newline at end of file
diff --git a/res/drawable/theme_cover_scrim_custom.xml b/res/drawable/theme_cover_scrim_custom.xml
new file mode 100644
index 0000000..de49be3
--- /dev/null
+++ b/res/drawable/theme_cover_scrim_custom.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+     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.
+-->
+<layer-list
+        xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item android:drawable="@drawable/theme_cover_scrim"/>
+    <item>
+        <shape android:shape="rectangle">
+            <gradient
+                android:angle="90"
+                android:centerY="25%"
+                android:startColor="@color/black_67_alpha"
+                android:centerColor="@android:color/transparent"
+                android:endColor="@android:color/transparent"
+                android:type="linear" />
+        </shape>
+    </item>
+</layer-list>
\ No newline at end of file
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 68ad908..ee4207e 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -26,7 +26,7 @@
     <color name="system_navigation_bar_divider">#1f000000</color>
 
     <color name="shape_thumbnail_color">#b2b2b2</color>
-    <color name="icon_thumbnail_color">@android:color/black</color>
+    <color name="icon_thumbnail_color">@color/white_70_alpha</color>
 
     <color name="clockface_preview_background">@android:color/black</color>
 
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 7857247..800e99a 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -90,6 +90,7 @@
 
     <style name="CoverTitleTextAppearance" parent="CardTitleTextAppearance">
         <item name="android:textSize">@dimen/card_cover_title_text_size</item>
+        <item name="android:textColor">@color/white_70_alpha</item>
     </style>
 
     <style name="FontCardTitleStyle" parent="HeaderTextAppearance">
@@ -105,6 +106,7 @@
 
     <style name="EditLabelStyle">
         <item name="android:textAppearance">@android:style/TextAppearance.DeviceDefault</item>
+        <item name="android:textColor">@color/material_white_100</item>
     </style>
 
     <style name="CustomThemeNameEditText" parent="@android:style/Widget.DeviceDefault.EditText">
diff --git a/src/com/android/customization/picker/theme/CustomThemeNameFragment.java b/src/com/android/customization/picker/theme/CustomThemeNameFragment.java
index 84915ff..04aac7d 100644
--- a/src/com/android/customization/picker/theme/CustomThemeNameFragment.java
+++ b/src/com/android/customization/picker/theme/CustomThemeNameFragment.java
@@ -15,11 +15,12 @@
  */
 package com.android.customization.picker.theme;
 
-import android.app.WallpaperColors;
-import android.content.res.ColorStateList;
+import android.content.Context;
 import android.content.res.Resources;
 import android.graphics.Bitmap;
 import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.LayerDrawable;
 import android.os.Bundle;
 import android.text.Editable;
 import android.text.TextWatcher;
@@ -35,7 +36,6 @@
 import androidx.cardview.widget.CardView;
 
 import com.android.customization.model.theme.ThemeBundle.PreviewInfo;
-import com.android.customization.model.theme.custom.CustomTheme;
 import com.android.customization.picker.theme.ThemePreviewPage.ThemeCoverPage;
 import com.android.wallpaper.R;
 import com.android.wallpaper.asset.Asset;
@@ -107,13 +107,14 @@
     }
 
     private void bindCover(CardView card) {
-        PreviewInfo previewInfo = mCustomThemeManager.buildCustomThemePreviewInfo(getContext());
-        mCoverPage = new ThemeCoverPage(getContext(), getThemeName(),
+        Context context = getContext();
+        PreviewInfo previewInfo = mCustomThemeManager.buildCustomThemePreviewInfo(context);
+        mCoverPage = new ThemeCoverPage(context, getThemeName(),
                 previewInfo.resolveAccentColor(getResources()), previewInfo.icons,
                 previewInfo.headlineFontFamily, previewInfo.bottomSheeetCornerRadius,
                 previewInfo.shapeDrawable, previewInfo.shapeAppIcons, null,
                 mColorButtonIds, mColorTileIds, mColorTileIconIds, mShapeIconIds,
-                new WallpaperLayoutListener());
+                new WallpaperLayoutListener(context));
         mCoverPage.setCard(card);
         mCoverPage.bindPreviewContent();
         mNameEditor.addTextChangedListener(new TextWatcher() {
@@ -135,6 +136,12 @@
     }
 
     private class WallpaperLayoutListener implements OnLayoutChangeListener {
+        private final Drawable mScrim;
+
+        WallpaperLayoutListener(Context context) {
+            mScrim = context.getResources()
+                    .getDrawable(R.drawable.theme_cover_scrim, context.getTheme());
+        }
         @Override
         public void onLayoutChange(View view, int left, int top, int right,
                 int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
@@ -152,8 +159,10 @@
 
         private void setWallpaperBitmap(View view, Bitmap bitmap) {
             Resources res = view.getContext().getResources();
-            BitmapDrawable background = new BitmapDrawable(res, bitmap);
-            background.setAlpha(128);
+            Drawable background = new BitmapDrawable(res, bitmap);
+            if (mScrim != null) {
+                background = new LayerDrawable(new Drawable[]{background, mScrim});
+            }
             view.findViewById(R.id.theme_preview_card_background).setBackground(background);
         }
     }
diff --git a/src/com/android/customization/picker/theme/ThemeFragment.java b/src/com/android/customization/picker/theme/ThemeFragment.java
index 134d255..22fa1d4 100644
--- a/src/com/android/customization/picker/theme/ThemeFragment.java
+++ b/src/com/android/customization/picker/theme/ThemeFragment.java
@@ -24,6 +24,7 @@
 import android.graphics.Bitmap;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
+import android.graphics.drawable.LayerDrawable;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.LayoutInflater;
@@ -321,12 +322,16 @@
             super(activity, R.layout.theme_preview_card);
             final Resources res = activity.getResources();
             final PreviewInfo previewInfo = theme.getPreviewInfo();
+            Drawable coverScrim = theme instanceof CustomTheme
+                    ? res.getDrawable(R.drawable.theme_cover_scrim_custom, activity.getTheme())
+                    : res.getDrawable(R.drawable.theme_cover_scrim, activity.getTheme());
+
             addPage(new ThemeCoverPage(activity, theme.getTitle(),
                     previewInfo.resolveAccentColor(res), previewInfo.icons,
                     previewInfo.headlineFontFamily, previewInfo.bottomSheeetCornerRadius,
                     previewInfo.shapeDrawable, previewInfo.shapeAppIcons, editClickListener,
                     mColorButtonIds, mColorTileIds, mColorTileIconIds, mShapeIconIds,
-                    new WallpaperPreviewLayoutListener(theme, previewInfo, true)));
+                    new WallpaperPreviewLayoutListener(theme, previewInfo, coverScrim)));
             addPage(new ThemePreviewPage(activity, R.string.preview_name_font, R.drawable.ic_font,
                     R.layout.preview_card_font_content,
                     previewInfo.resolveAccentColor(res)) {
@@ -427,7 +432,7 @@
                         previewInfo.resolveAccentColor(res)) {
 
                     private final WallpaperPreviewLayoutListener mListener =
-                            new WallpaperPreviewLayoutListener(theme, previewInfo, false);
+                            new WallpaperPreviewLayoutListener(theme, previewInfo, null);
 
                     @Override
                     protected boolean containsWallpaper() {
@@ -459,13 +464,13 @@
         private static class WallpaperPreviewLayoutListener implements OnLayoutChangeListener {
             private final ThemeBundle mTheme;
             private final PreviewInfo mPreviewInfo;
-            private final boolean mTransparent;
+            private final Drawable mScrim;
 
             public WallpaperPreviewLayoutListener(ThemeBundle theme, PreviewInfo previewInfo,
-                    boolean transparent) {
+                    Drawable scrim) {
                 mTheme = theme;
                 mPreviewInfo = previewInfo;
-                mTransparent = transparent;
+                mScrim = scrim;
             }
 
             @Override
@@ -487,12 +492,12 @@
 
             private void setWallpaperBitmap(View view, Bitmap bitmap) {
                 Resources res = view.getContext().getResources();
-                BitmapDrawable background = new BitmapDrawable(res, bitmap);
-                if (mTransparent) {
-                    background.setAlpha(128);
+                Drawable background = new BitmapDrawable(res, bitmap);
+                if (mScrim != null) {
+                    background = new LayerDrawable(new Drawable[]{background, mScrim});
                 }
                 view.findViewById(R.id.theme_preview_card_background).setBackground(background);
-                if (!mTransparent) {
+                if (mScrim == null) {
                     int colorsHint = WallpaperColors.fromBitmap(bitmap).getColorHints();
                     TextView header = view.findViewById(R.id.theme_preview_card_header);
                     if ((colorsHint & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) == 0) {
diff --git a/src/com/android/customization/picker/theme/ThemePreviewPage.java b/src/com/android/customization/picker/theme/ThemePreviewPage.java
index eaa169e..3c58079 100644
--- a/src/com/android/customization/picker/theme/ThemePreviewPage.java
+++ b/src/com/android/customization/picker/theme/ThemePreviewPage.java
@@ -160,12 +160,6 @@
                 ImageView iconView = card.findViewById(mShapeIconIds[i]);
                 iconView.setBackground(mShapeAppIcons.get(i));
             }
-
-            Drawable background = card.findViewById(R.id.theme_preview_card_background)
-                    .getBackground();
-            if (background != null) {
-                background.setAlpha(128);
-            }
         }
 
         @Override
@@ -198,9 +192,7 @@
             card.setOnClickListener(mEditClickListener);
             editLabel.setVisibility(mEditClickListener != null
                     ? View.VISIBLE : View.INVISIBLE);
-            ColorStateList themeAccentColor = ColorStateList.valueOf(accentColor);
-            editLabel.setTextColor(themeAccentColor);
-            editLabel.setCompoundDrawableTintList(themeAccentColor);
+
             View qsb = card.findViewById(R.id.theme_qsb);
             if (qsb != null && qsb.getVisibility() == View.VISIBLE) {
                 if (qsb.getBackground() instanceof GradientDrawable) {
