diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 16f8964..ed05ee5 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -22,7 +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="check_size">20dp</dimen>
+    <dimen name="check_offset">4dp</dimen>
 
     <dimen name="preview_indicator_width">16dp</dimen>
     <dimen name="preview_indicator_height">8dp</dimen>
diff --git a/src/com/android/customization/model/theme/DefaultThemeProvider.java b/src/com/android/customization/model/theme/DefaultThemeProvider.java
index 5123910..58b6daf 100644
--- a/src/com/android/customization/model/theme/DefaultThemeProvider.java
+++ b/src/com/android/customization/model/theme/DefaultThemeProvider.java
@@ -111,6 +111,11 @@
         }
     }
 
+    @Override
+    public boolean isAvailable() {
+        return mOverlayProvider.isAvailable() && super.isAvailable();
+    }
+
     private void loadAll() {
         addDefaultTheme();
 
diff --git a/src/com/android/customization/model/theme/OverlayManagerCompat.java b/src/com/android/customization/model/theme/OverlayManagerCompat.java
index 202a0d4..163eca1 100644
--- a/src/com/android/customization/model/theme/OverlayManagerCompat.java
+++ b/src/com/android/customization/model/theme/OverlayManagerCompat.java
@@ -44,6 +44,10 @@
         mTargetPackages = ResourceConstants.getPackagesToOverlay(context);
     }
 
+    public boolean isAvailable() {
+        return mOverlayManager != null;
+    }
+
     /**
      * Enables the overlay provided by the given package for the given user Id
      * @return true if the operation succeeded
diff --git a/src/com/android/customization/model/theme/OverlayThemeExtractor.java b/src/com/android/customization/model/theme/OverlayThemeExtractor.java
index 3c261e7..9c85fa4 100644
--- a/src/com/android/customization/model/theme/OverlayThemeExtractor.java
+++ b/src/com/android/customization/model/theme/OverlayThemeExtractor.java
@@ -40,21 +40,26 @@
     OverlayThemeExtractor(Context context) {
         mContext = context;
         OverlayManager om = context.getSystemService(OverlayManager.class);
-        Consumer<OverlayInfo> addToMap = overlayInfo -> mOverlayInfos.put(
-                overlayInfo.getPackageName(), overlayInfo);
+        if (om != null) {
+            Consumer<OverlayInfo> addToMap = overlayInfo -> mOverlayInfos.put(
+                    overlayInfo.getPackageName(), overlayInfo);
 
-        UserHandle user = UserHandle.of(UserHandle.myUserId());
-        om.getOverlayInfosForTarget(ANDROID_PACKAGE, user).forEach(addToMap);
-        om.getOverlayInfosForTarget(SYSUI_PACKAGE, user).forEach(addToMap);
-        om.getOverlayInfosForTarget(SETTINGS_PACKAGE, user).forEach(addToMap);
-        om.getOverlayInfosForTarget(ResourceConstants.getLauncherPackage(context), user)
-                .forEach(addToMap);
-        om.getOverlayInfosForTarget(context.getPackageName(), user).forEach(addToMap);
-
+            UserHandle user = UserHandle.of(UserHandle.myUserId());
+            om.getOverlayInfosForTarget(ANDROID_PACKAGE, user).forEach(addToMap);
+            om.getOverlayInfosForTarget(SYSUI_PACKAGE, user).forEach(addToMap);
+            om.getOverlayInfosForTarget(SETTINGS_PACKAGE, user).forEach(addToMap);
+            om.getOverlayInfosForTarget(ResourceConstants.getLauncherPackage(context), user)
+                    .forEach(addToMap);
+            om.getOverlayInfosForTarget(context.getPackageName(), user).forEach(addToMap);
+        }
         mShapePreviewIconPackages = context.getResources().getStringArray(
                 R.array.icon_shape_preview_packages);
     }
 
+    boolean isAvailable() {
+        return !mOverlayInfos.isEmpty();
+    }
+
     void addColorOverlay(Builder builder, String colorOverlayPackage)
             throws NameNotFoundException {
         if (!TextUtils.isEmpty(colorOverlayPackage)) {
diff --git a/src/com/android/customization/model/theme/ThemeManager.java b/src/com/android/customization/model/theme/ThemeManager.java
index d873972..f7bbd00 100644
--- a/src/com/android/customization/model/theme/ThemeManager.java
+++ b/src/com/android/customization/model/theme/ThemeManager.java
@@ -84,7 +84,7 @@
 
     @Override
     public boolean isAvailable() {
-        return mProvider.isAvailable();
+        return mOverlayManagerCompat.isAvailable() && mProvider.isAvailable();
     }
 
     @Override
diff --git a/src/com/android/customization/widget/OptionSelectorController.java b/src/com/android/customization/widget/OptionSelectorController.java
index de2f09c..b2a81aa 100644
--- a/src/com/android/customization/widget/OptionSelectorController.java
+++ b/src/com/android/customization/widget/OptionSelectorController.java
@@ -201,12 +201,12 @@
                     // Position at lower right
                     int idx = layers.length - 1;
                     int checkSize = (int) res.getDimension(R.dimen.check_size);
+                    int checkOffset = (int) res.getDimension(R.dimen.check_offset);
                     checkedFrame.setLayerGravity(idx, Gravity.BOTTOM | Gravity.RIGHT);
                     checkedFrame.setLayerWidth(idx, checkSize);
                     checkedFrame.setLayerHeight(idx, checkSize);
-                    checkedFrame.setLayerInsetBottom(idx,
-                            holder.itemView.getPaddingBottom() - (checkSize/3));
-                    checkedFrame.setLayerInsetLeft(idx, checkSize/3);
+                    checkedFrame.setLayerInsetBottom(idx, checkOffset);
+                    checkedFrame.setLayerInsetLeft(idx, checkOffset);
                     holder.itemView.setForeground(checkedFrame);
 
                     // Initialize the currently applied option
