diff --git a/src/com/android/customization/model/theme/DefaultThemeProvider.java b/src/com/android/customization/model/theme/DefaultThemeProvider.java
index 02a0047..bf991d9 100644
--- a/src/com/android/customization/model/theme/DefaultThemeProvider.java
+++ b/src/com/android/customization/model/theme/DefaultThemeProvider.java
@@ -139,12 +139,23 @@
                         mStubApkResources.getIdentifier(TITLE_PREFIX + themeName,
                                 "string", mStubPackageName)));
 
-                String fontOverlayPackage = getOverlayPackage(FONT_PREFIX, themeName);
+                String shapeOverlayPackage = getOverlayPackage(SHAPE_PREFIX, themeName);
+                if (!TextUtils.isEmpty(shapeOverlayPackage)) {
+                    builder.addOverlayPackage(getOverlayCategory(shapeOverlayPackage),
+                            shapeOverlayPackage)
+                            .setShapePath(loadString(CONFIG_ICON_MASK, shapeOverlayPackage))
+                            .setShapePreview(getDrawableResourceAsset(
+                                    PREVIEW_SHAPE_PREFIX, themeName));
+                } else {
+                    builder.setShapePath(mContext.getResources().getString(
+                            Resources.getSystem().getIdentifier(CONFIG_ICON_MASK, "string",
+                                    ANDROID_PACKAGE)));
+                }
 
+                String fontOverlayPackage = getOverlayPackage(FONT_PREFIX, themeName);
                 addFontOverlay(builder, fontOverlayPackage);
 
                 String colorOverlayPackage = getOverlayPackage(COLOR_PREFIX, themeName);
-
                 if (!TextUtils.isEmpty(colorOverlayPackage)) {
                     builder.addOverlayPackage(getOverlayCategory(colorOverlayPackage),
                                 colorOverlayPackage)
@@ -156,20 +167,6 @@
                                     PREVIEW_COLOR_PREFIX, themeName));
                 }
 
-                String shapeOverlayPackage = getOverlayPackage(SHAPE_PREFIX, themeName);
-
-                if (!TextUtils.isEmpty(shapeOverlayPackage)) {
-                    builder.addOverlayPackage(getOverlayCategory(shapeOverlayPackage),
-                                shapeOverlayPackage)
-                            .setShapePath(loadString(CONFIG_ICON_MASK, shapeOverlayPackage))
-                            .setShapePreview(getDrawableResourceAsset(
-                                    PREVIEW_SHAPE_PREFIX, themeName));
-                } else {
-                    builder.setShapePath(mContext.getResources().getString(
-                            Resources.getSystem().getIdentifier(CONFIG_ICON_MASK, "string",
-                                    ANDROID_PACKAGE)));
-                }
-
                 String iconAndroidOverlayPackage = getOverlayPackage(ICON_ANDROID_PREFIX,
                         themeName);
 
