diff --git a/src/com/android/customization/model/grid/DefaultShapeGridManager.kt b/src/com/android/customization/model/grid/DefaultShapeGridManager.kt
index e2bccb7..6f20dd3 100644
--- a/src/com/android/customization/model/grid/DefaultShapeGridManager.kt
+++ b/src/com/android/customization/model/grid/DefaultShapeGridManager.kt
@@ -18,6 +18,8 @@
 
 import android.content.ContentValues
 import android.content.Context
+import android.graphics.drawable.Drawable
+import androidx.core.content.res.ResourcesCompat
 import com.android.wallpaper.R
 import com.android.wallpaper.picker.di.modules.BackgroundDispatcher
 import com.android.wallpaper.util.PreviewUtils
@@ -71,6 +73,10 @@
                                                     .toBoolean(),
                                             rows = rows,
                                             cols = cols,
+                                            iconId =
+                                                cursor.getInt(
+                                                    cursor.getColumnIndex(KEY_GRID_ICON_ID)
+                                                ),
                                         )
                                     )
                                 }
@@ -85,6 +91,7 @@
                                 }
                                 list
                             }
+                            .sortedByDescending { it.rows * it.cols }
                     }
             } else {
                 null
@@ -149,6 +156,14 @@
         )
     }
 
+    override fun getGridOptionDrawble(iconId: Int): Drawable? {
+        return ResourcesCompat.getDrawable(
+            context.packageManager.getResourcesForApplication(APP_RESOURCES_PACKAGE_NAME),
+            iconId,
+            /* theme = */ null,
+        )
+    }
+
     companion object {
         const val SHAPE_OPTIONS: String = "shape_options"
         const val GRID_OPTIONS: String = "list_options"
@@ -162,5 +177,8 @@
         const val COL_COLS: String = "cols"
         const val COL_IS_DEFAULT: String = "is_default"
         const val COL_PATH: String = "path"
+        const val KEY_GRID_ICON_ID: String = "grid_icon_id"
+        private const val APP_RESOURCES_PACKAGE_NAME: String =
+            "com.google.android.apps.nexuslauncher"
     }
 }
diff --git a/src/com/android/customization/model/grid/GridOptionModel.kt b/src/com/android/customization/model/grid/GridOptionModel.kt
index 3e10a01..d2bf4a5 100644
--- a/src/com/android/customization/model/grid/GridOptionModel.kt
+++ b/src/com/android/customization/model/grid/GridOptionModel.kt
@@ -22,4 +22,5 @@
     val isCurrent: Boolean,
     val rows: Int,
     val cols: Int,
+    val iconId: Int,
 )
diff --git a/src/com/android/customization/model/grid/ShapeGridManager.kt b/src/com/android/customization/model/grid/ShapeGridManager.kt
index 0a23346..7a74b8d 100644
--- a/src/com/android/customization/model/grid/ShapeGridManager.kt
+++ b/src/com/android/customization/model/grid/ShapeGridManager.kt
@@ -16,6 +16,8 @@
 
 package com.android.customization.model.grid
 
+import android.graphics.drawable.Drawable
+
 interface ShapeGridManager {
 
     suspend fun getGridOptions(): List<GridOptionModel>?
@@ -23,4 +25,6 @@
     suspend fun getShapeOptions(): List<ShapeOptionModel>?
 
     fun applyShapeGridOption(shapeKey: String, gridKey: String): Int
+
+    fun getGridOptionDrawble(iconId: Int): Drawable?
 }
diff --git a/src/com/android/customization/picker/grid/data/repository/ShapeGridRepository.kt b/src/com/android/customization/picker/grid/data/repository/ShapeGridRepository.kt
index 86c455e..84462ad 100644
--- a/src/com/android/customization/picker/grid/data/repository/ShapeGridRepository.kt
+++ b/src/com/android/customization/picker/grid/data/repository/ShapeGridRepository.kt
@@ -17,6 +17,7 @@
 
 package com.android.customization.picker.grid.data.repository
 
+import android.graphics.drawable.Drawable
 import com.android.customization.model.grid.GridOptionModel
 import com.android.customization.model.grid.ShapeGridManager
 import com.android.customization.model.grid.ShapeOptionModel
@@ -69,4 +70,8 @@
             _gridOptions.value = manager.getGridOptions()
             _shapeOptions.value = manager.getShapeOptions()
         }
+
+    fun getGridOptionDrawable(iconId: Int): Drawable? {
+        return manager.getGridOptionDrawble(iconId)
+    }
 }
diff --git a/src/com/android/customization/picker/grid/domain/interactor/ShapeGridInteractor.kt b/src/com/android/customization/picker/grid/domain/interactor/ShapeGridInteractor.kt
index 8c4522e..59eda52 100644
--- a/src/com/android/customization/picker/grid/domain/interactor/ShapeGridInteractor.kt
+++ b/src/com/android/customization/picker/grid/domain/interactor/ShapeGridInteractor.kt
@@ -17,6 +17,7 @@
 
 package com.android.customization.picker.grid.domain.interactor
 
+import android.graphics.drawable.Drawable
 import com.android.customization.picker.grid.data.repository.ShapeGridRepository
 import javax.inject.Inject
 import javax.inject.Singleton
@@ -34,4 +35,6 @@
 
     suspend fun applySelectedOption(shapeKey: String, gridKey: String) =
         repository.applySelectedOption(shapeKey, gridKey)
+
+    fun getGridOptionDrawable(iconId: Int): Drawable? = repository.getGridOptionDrawable(iconId)
 }
diff --git a/src/com/android/wallpaper/customization/ui/binder/ShapeGridFloatingSheetBinder.kt b/src/com/android/wallpaper/customization/ui/binder/ShapeGridFloatingSheetBinder.kt
index af5b20d..07ea804 100644
--- a/src/com/android/wallpaper/customization/ui/binder/ShapeGridFloatingSheetBinder.kt
+++ b/src/com/android/wallpaper/customization/ui/binder/ShapeGridFloatingSheetBinder.kt
@@ -18,6 +18,7 @@
 
 import android.animation.ValueAnimator
 import android.content.Context
+import android.graphics.drawable.Drawable
 import android.view.View
 import android.view.ViewGroup
 import android.view.ViewTreeObserver.OnGlobalLayoutListener
@@ -31,8 +32,6 @@
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.RecyclerView
 import com.android.customization.picker.common.ui.view.SingleRowListItemSpacing
-import com.android.customization.picker.grid.ui.binder.GridIconViewBinder
-import com.android.customization.picker.grid.ui.viewmodel.GridIconViewModel
 import com.android.customization.picker.grid.ui.viewmodel.ShapeIconViewModel
 import com.android.themepicker.R
 import com.android.wallpaper.customization.ui.util.ThemePickerCustomizationOptionUtil.ThemePickerHomeCustomizationOption.APP_SHAPE_GRID
@@ -286,14 +285,14 @@
         shouldAnimateColor: () -> Boolean,
         lifecycleOwner: LifecycleOwner,
         backgroundDispatcher: CoroutineDispatcher,
-    ): OptionItemAdapter2<GridIconViewModel> =
+    ): OptionItemAdapter2<Drawable> =
         OptionItemAdapter2(
             layoutResourceId = R.layout.grid_option2,
             lifecycleOwner = lifecycleOwner,
             backgroundDispatcher = backgroundDispatcher,
-            bindPayload = { view: View, gridIcon: GridIconViewModel ->
+            bindPayload = { view: View, gridIcon: Drawable ->
                 val imageView = view.findViewById(R.id.foreground) as? ImageView
-                imageView?.let { GridIconViewBinder.bind(imageView, gridIcon) }
+                imageView?.setImageDrawable(gridIcon)
                 return@OptionItemAdapter2 null
             },
             colorUpdateViewModel = WeakReference(colorUpdateViewModel),
@@ -302,7 +301,7 @@
 
     private fun RecyclerView.initGridOptionList(
         context: Context,
-        adapter: OptionItemAdapter2<GridIconViewModel>,
+        adapter: OptionItemAdapter2<Drawable>,
     ) {
         apply {
             this.layoutManager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false)
diff --git a/src/com/android/wallpaper/customization/ui/binder/ThemePickerCustomizationOptionBinder.kt b/src/com/android/wallpaper/customization/ui/binder/ThemePickerCustomizationOptionBinder.kt
index 3016299..b44b152 100644
--- a/src/com/android/wallpaper/customization/ui/binder/ThemePickerCustomizationOptionBinder.kt
+++ b/src/com/android/wallpaper/customization/ui/binder/ThemePickerCustomizationOptionBinder.kt
@@ -37,7 +37,6 @@
 import com.android.customization.picker.color.ui.binder.ColorOptionIconBinder2
 import com.android.customization.picker.color.ui.view.ColorOptionIconView2
 import com.android.customization.picker.color.ui.viewmodel.ColorOptionIconViewModel
-import com.android.customization.picker.grid.ui.binder.GridIconViewBinder
 import com.android.customization.picker.settings.ui.binder.ColorContrastSectionViewBinder2
 import com.android.systemui.plugins.clocks.ClockFontAxisSetting
 import com.android.systemui.plugins.clocks.ClockPreviewConfig
@@ -273,12 +272,7 @@
                     optionsViewModel.shapeGridPickerViewModel.selectedGridOption.collect {
                         gridOption ->
                         TextViewBinder.bind(optionShapeGridDescription, gridOption.text)
-                        gridOption.payload?.let { gridIconViewModel ->
-                            GridIconViewBinder.bind(
-                                view = optionShapeGridIcon,
-                                viewModel = gridIconViewModel,
-                            )
-                        }
+                        gridOption.payload?.let { optionShapeGridIcon.setImageDrawable(it) }
                     }
                 }
 
diff --git a/src/com/android/wallpaper/customization/ui/viewmodel/ShapeGridPickerViewModel.kt b/src/com/android/wallpaper/customization/ui/viewmodel/ShapeGridPickerViewModel.kt
index 60b5c35..ce97154 100644
--- a/src/com/android/wallpaper/customization/ui/viewmodel/ShapeGridPickerViewModel.kt
+++ b/src/com/android/wallpaper/customization/ui/viewmodel/ShapeGridPickerViewModel.kt
@@ -17,12 +17,10 @@
 package com.android.wallpaper.customization.ui.viewmodel
 
 import android.content.Context
-import android.content.res.Resources
-import com.android.customization.model.ResourceConstants
+import android.graphics.drawable.Drawable
 import com.android.customization.model.grid.GridOptionModel
 import com.android.customization.model.grid.ShapeOptionModel
 import com.android.customization.picker.grid.domain.interactor.ShapeGridInteractor
-import com.android.customization.picker.grid.ui.viewmodel.GridIconViewModel
 import com.android.customization.picker.grid.ui.viewmodel.ShapeIconViewModel
 import com.android.themepicker.R
 import com.android.wallpaper.picker.common.icon.ui.viewmodel.Icon
@@ -50,7 +48,7 @@
 @AssistedInject
 constructor(
     @ApplicationContext private val context: Context,
-    interactor: ShapeGridInteractor,
+    private val interactor: ShapeGridInteractor,
     @Assisted private val viewModelScope: CoroutineScope,
 ) {
 
@@ -126,7 +124,7 @@
             overridingGridOptionKey ?: selectedGridOption.key.value
         }
 
-    val gridOptions: Flow<List<OptionItemViewModel2<GridIconViewModel>>> =
+    val gridOptions: Flow<List<OptionItemViewModel2<Drawable>>> =
         interactor.gridOptions
             .filterNotNull()
             .map { gridOptions -> gridOptions.map { toGridOptionItemViewModel(it) } }
@@ -187,18 +185,7 @@
         )
     }
 
-    private fun toGridOptionItemViewModel(
-        option: GridOptionModel
-    ): OptionItemViewModel2<GridIconViewModel> {
-        val iconShapePath =
-            context.resources.getString(
-                Resources.getSystem()
-                    .getIdentifier(
-                        ResourceConstants.CONFIG_ICON_MASK,
-                        "string",
-                        ResourceConstants.ANDROID_PACKAGE,
-                    )
-            )
+    private fun toGridOptionItemViewModel(option: GridOptionModel): OptionItemViewModel2<Drawable> {
         val isSelected =
             previewingGridKey
                 .map { it == option.key }
@@ -210,8 +197,7 @@
 
         return OptionItemViewModel2(
             key = MutableStateFlow(option.key),
-            payload =
-                GridIconViewModel(columns = option.cols, rows = option.rows, path = iconShapePath),
+            payload = interactor.getGridOptionDrawable(option.iconId),
             text = Text.Loaded(option.title),
             isSelected = isSelected,
             onClicked =
diff --git a/tests/common/src/com/android/customization/model/grid/FakeShapeGridManager.kt b/tests/common/src/com/android/customization/model/grid/FakeShapeGridManager.kt
index b1f044a..6269fee 100644
--- a/tests/common/src/com/android/customization/model/grid/FakeShapeGridManager.kt
+++ b/tests/common/src/com/android/customization/model/grid/FakeShapeGridManager.kt
@@ -16,12 +16,18 @@
 
 package com.android.customization.model.grid
 
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
+import android.graphics.drawable.Drawable
 import javax.inject.Inject
 import javax.inject.Singleton
 
 @Singleton
 class FakeShapeGridManager @Inject constructor() : ShapeGridManager {
 
+    val gridOptionDrawable0: Drawable = ColorDrawable(Color.BLUE)
+    val gridOptionDrawable1: Drawable = ColorDrawable(Color.GREEN)
+
     private var gridOptions: List<GridOptionModel>? = DEFAULT_GRID_OPTION_LIST
 
     private var shapeOptions: List<ShapeOptionModel>? = DEFAULT_SHAPE_OPTION_LIST
@@ -36,6 +42,14 @@
         return 0
     }
 
+    override fun getGridOptionDrawble(iconId: Int): Drawable? {
+        return when (iconId) {
+            0 -> gridOptionDrawable0
+            1 -> gridOptionDrawable1
+            else -> null
+        }
+    }
+
     companion object {
         val DEFAULT_GRID_OPTION_LIST =
             listOf(
@@ -45,6 +59,7 @@
                     isCurrent = true,
                     rows = 5,
                     cols = 5,
+                    iconId = 0,
                 ),
                 GridOptionModel(
                     key = "practical",
@@ -52,6 +67,7 @@
                     isCurrent = false,
                     rows = 5,
                     cols = 4,
+                    iconId = 1,
                 ),
             )
 
diff --git a/tests/robotests/src/com/android/wallpaper/customization/ui/viewmodel/ShapeGridPickerViewModelTest.kt b/tests/robotests/src/com/android/wallpaper/customization/ui/viewmodel/ShapeGridPickerViewModelTest.kt
index 2bca39c..0bf5125 100644
--- a/tests/robotests/src/com/android/wallpaper/customization/ui/viewmodel/ShapeGridPickerViewModelTest.kt
+++ b/tests/robotests/src/com/android/wallpaper/customization/ui/viewmodel/ShapeGridPickerViewModelTest.kt
@@ -17,13 +17,10 @@
 package com.android.wallpaper.customization.ui.viewmodel
 
 import android.content.Context
-import android.content.res.Resources
-import androidx.test.core.app.ApplicationProvider
+import android.graphics.drawable.Drawable
 import androidx.test.filters.SmallTest
-import com.android.customization.model.ResourceConstants
 import com.android.customization.model.grid.FakeShapeGridManager
 import com.android.customization.picker.grid.domain.interactor.ShapeGridInteractor
-import com.android.customization.picker.grid.ui.viewmodel.GridIconViewModel
 import com.android.customization.picker.grid.ui.viewmodel.ShapeIconViewModel
 import com.android.wallpaper.picker.common.text.ui.viewmodel.Text
 import com.android.wallpaper.picker.option.ui.viewmodel.OptionItemViewModel2
@@ -57,18 +54,6 @@
     @Inject lateinit var interactor: ShapeGridInteractor
     @Inject @ApplicationContext lateinit var appContext: Context
 
-    private val iconShapePath =
-        ApplicationProvider.getApplicationContext<Context>()
-            .resources
-            .getString(
-                Resources.getSystem()
-                    .getIdentifier(
-                        ResourceConstants.CONFIG_ICON_MASK,
-                        "string",
-                        ResourceConstants.ANDROID_PACKAGE,
-                    )
-            )
-
     private lateinit var underTest: ShapeGridPickerViewModel
 
     @Before
@@ -162,7 +147,7 @@
             assertGridItem(
                 optionItem = selectedGridOption(),
                 key = "normal",
-                payload = GridIconViewModel(5, 5, iconShapePath),
+                payload = gridOptionsManager.gridOptionDrawable0,
                 text = Text.Loaded("5x5"),
                 isTextUserVisible = true,
                 isSelected = true,
@@ -186,7 +171,7 @@
             assertGridItem(
                 optionItem = selectedGridOption(),
                 key = "practical",
-                payload = GridIconViewModel(4, 5, iconShapePath),
+                payload = gridOptionsManager.gridOptionDrawable1,
                 text = Text.Loaded("4x5"),
                 isTextUserVisible = true,
                 isSelected = true,
@@ -202,7 +187,7 @@
             assertGridItem(
                 optionItem = optionItems()?.get(0),
                 key = "normal",
-                payload = GridIconViewModel(5, 5, iconShapePath),
+                payload = gridOptionsManager.gridOptionDrawable0,
                 text = Text.Loaded("5x5"),
                 isTextUserVisible = true,
                 isSelected = true,
@@ -211,7 +196,7 @@
             assertGridItem(
                 optionItem = optionItems()?.get(1),
                 key = "practical",
-                payload = GridIconViewModel(4, 5, iconShapePath),
+                payload = gridOptionsManager.gridOptionDrawable1,
                 text = Text.Loaded("4x5"),
                 isTextUserVisible = true,
                 isSelected = false,
@@ -232,7 +217,7 @@
             assertGridItem(
                 optionItem = optionItems()?.get(0),
                 key = "normal",
-                payload = GridIconViewModel(5, 5, iconShapePath),
+                payload = gridOptionsManager.gridOptionDrawable0,
                 text = Text.Loaded("5x5"),
                 isTextUserVisible = true,
                 isSelected = false,
@@ -241,7 +226,7 @@
             assertGridItem(
                 optionItem = optionItems()?.get(1),
                 key = "practical",
-                payload = GridIconViewModel(4, 5, iconShapePath),
+                payload = gridOptionsManager.gridOptionDrawable1,
                 text = Text.Loaded("4x5"),
                 isTextUserVisible = true,
                 isSelected = true,
@@ -268,9 +253,9 @@
     }
 
     private fun TestScope.assertGridItem(
-        optionItem: OptionItemViewModel2<GridIconViewModel>?,
+        optionItem: OptionItemViewModel2<Drawable>?,
         key: String,
-        payload: GridIconViewModel?,
+        payload: Drawable?,
         text: Text,
         isTextUserVisible: Boolean,
         isSelected: Boolean,
