diff --git a/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePreviewBinder.kt b/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePreviewBinder.kt
index 0af6bf4..c6cdcaa 100644
--- a/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePreviewBinder.kt
+++ b/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePreviewBinder.kt
@@ -18,29 +18,17 @@
 package com.android.customization.picker.quickaffordance.ui.binder
 
 import android.app.Activity
-import android.content.Intent
 import android.os.Bundle
-import android.service.wallpaper.WallpaperService
-import android.view.SurfaceView
 import androidx.cardview.widget.CardView
 import androidx.lifecycle.Lifecycle
-import androidx.lifecycle.LifecycleEventObserver
 import androidx.lifecycle.LifecycleOwner
 import androidx.lifecycle.flowWithLifecycle
 import androidx.lifecycle.lifecycleScope
 import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordancePickerViewModel
 import com.android.systemui.shared.quickaffordance.shared.model.KeyguardQuickAffordancePreviewConstants
 import com.android.wallpaper.R
-import com.android.wallpaper.asset.Asset
-import com.android.wallpaper.asset.BitmapCachingAsset
-import com.android.wallpaper.model.LiveWallpaperInfo
 import com.android.wallpaper.model.WallpaperInfo
-import com.android.wallpaper.picker.WorkspaceSurfaceHolderCallback
-import com.android.wallpaper.util.PreviewUtils
-import com.android.wallpaper.util.ResourceUtils
-import com.android.wallpaper.util.WallpaperConnection
-import com.android.wallpaper.util.WallpaperSurfaceCallback
-import java.util.concurrent.CompletableFuture
+import com.android.wallpaper.picker.customization.ui.binder.ScreenPreviewBinder
 import kotlinx.coroutines.launch
 
 object KeyguardQuickAffordancePreviewBinder {
@@ -54,123 +42,25 @@
         lifecycleOwner: LifecycleOwner,
         wallpaperInfoProvider: suspend () -> WallpaperInfo?,
     ) {
-        val workspaceSurface: SurfaceView = previewView.requireViewById(R.id.workspace_surface)
-        val wallpaperSurface: SurfaceView = previewView.requireViewById(R.id.wallpaper_surface)
+        val binding =
+            ScreenPreviewBinder.bind(
+                activity = activity,
+                previewView = previewView,
+                viewModel = viewModel.preview,
+                lifecycleOwner = lifecycleOwner,
+                wallpaperInfoProvider = wallpaperInfoProvider,
+            )
 
-        previewView.radius =
-            previewView.resources.getDimension(R.dimen.wallpaper_picker_entry_card_corner_radius)
         previewView.contentDescription =
             previewView.context.getString(
                 R.string.lockscreen_wallpaper_preview_card_content_description
             )
 
-        var previewSurfaceCallback: WorkspaceSurfaceHolderCallback? = null
-        var wallpaperSurfaceCallback: WallpaperSurfaceCallback? = null
-        var wallpaperConnection: WallpaperConnection? = null
-        var wallpaperInfo: WallpaperInfo? = null
-
-        lifecycleOwner.lifecycle.addObserver(
-            LifecycleEventObserver { _, event ->
-                when (event) {
-                    Lifecycle.Event.ON_CREATE -> {
-                        previewSurfaceCallback =
-                            WorkspaceSurfaceHolderCallback(
-                                workspaceSurface,
-                                PreviewUtils(
-                                    context = previewView.context,
-                                    authority =
-                                        previewView.context.getString(
-                                            R.string.lock_screen_preview_provider_authority
-                                        ),
-                                ),
-                                Bundle().apply {
-                                    putString(
-                                        KeyguardQuickAffordancePreviewConstants
-                                            .KEY_INITIALLY_SELECTED_SLOT_ID,
-                                        viewModel.selectedSlotId.value,
-                                    )
-                                },
-                            )
-                        workspaceSurface.holder.addCallback(previewSurfaceCallback)
-                        workspaceSurface.setZOrderMediaOverlay(true)
-
-                        wallpaperSurfaceCallback =
-                            WallpaperSurfaceCallback(
-                                previewView.context,
-                                previewView,
-                                wallpaperSurface,
-                                CompletableFuture.completedFuture(
-                                    WallpaperInfo.ColorInfo(
-                                        /* wallpaperColors= */ null,
-                                        ResourceUtils.getColorAttr(
-                                            previewView.context,
-                                            android.R.attr.colorSecondary,
-                                        )
-                                    )
-                                ),
-                            ) {
-                                maybeLoadThumbnail(
-                                    activity = activity,
-                                    wallpaperInfo = wallpaperInfo,
-                                    surfaceCallback = wallpaperSurfaceCallback,
-                                )
-                            }
-                        wallpaperSurface.holder.addCallback(wallpaperSurfaceCallback)
-                        wallpaperSurface.setZOrderMediaOverlay(true)
-                    }
-                    Lifecycle.Event.ON_DESTROY -> {
-                        workspaceSurface.holder.removeCallback(previewSurfaceCallback)
-                        previewSurfaceCallback?.cleanUp()
-                        wallpaperSurface.holder.removeCallback(wallpaperSurfaceCallback)
-                        wallpaperSurfaceCallback?.cleanUp()
-                    }
-                    Lifecycle.Event.ON_RESUME -> {
-                        lifecycleOwner.lifecycleScope.launch {
-                            wallpaperInfo = wallpaperInfoProvider()
-                            (wallpaperInfo as? LiveWallpaperInfo)?.let { liveWallpaperInfo ->
-                                if (WallpaperConnection.isPreviewAvailable()) {
-                                    wallpaperConnection =
-                                        WallpaperConnection(
-                                            Intent(WallpaperService.SERVICE_INTERFACE).apply {
-                                                setClassName(
-                                                    liveWallpaperInfo.wallpaperComponent
-                                                        .packageName,
-                                                    liveWallpaperInfo.wallpaperComponent.serviceName
-                                                )
-                                            },
-                                            previewView.context,
-                                            null,
-                                            wallpaperSurface,
-                                            null,
-                                        )
-
-                                    wallpaperConnection?.connect()
-                                    wallpaperConnection?.setVisibility(true)
-                                }
-                            }
-                            maybeLoadThumbnail(
-                                activity = activity,
-                                wallpaperInfo = wallpaperInfo,
-                                surfaceCallback = wallpaperSurfaceCallback,
-                            )
-                        }
-                    }
-                    Lifecycle.Event.ON_PAUSE -> {
-                        wallpaperConnection?.setVisibility(false)
-                    }
-                    Lifecycle.Event.ON_STOP -> {
-                        wallpaperConnection?.disconnect()
-                    }
-                    else -> Unit
-                }
-            }
-        )
-
         lifecycleOwner.lifecycleScope.launch {
             viewModel.selectedSlotId
                 .flowWithLifecycle(lifecycleOwner.lifecycle, Lifecycle.State.STARTED)
                 .collect { slotId ->
-                    previewSurfaceCallback?.send(
+                    binding.sendMessage(
                         KeyguardQuickAffordancePreviewConstants.MESSAGE_ID_SLOT_SELECTED,
                         Bundle().apply {
                             putString(KeyguardQuickAffordancePreviewConstants.KEY_SLOT_ID, slotId)
@@ -179,24 +69,4 @@
                 }
         }
     }
-
-    private fun maybeLoadThumbnail(
-        activity: Activity,
-        wallpaperInfo: WallpaperInfo?,
-        surfaceCallback: WallpaperSurfaceCallback?,
-    ) {
-        if (wallpaperInfo == null || surfaceCallback == null) {
-            return
-        }
-
-        val imageView = surfaceCallback.homeImageWallpaper
-        val thumbAsset: Asset = BitmapCachingAsset(activity, wallpaperInfo.getThumbAsset(activity))
-        if (imageView != null && imageView.drawable == null) {
-            thumbAsset.loadPreviewImage(
-                activity,
-                imageView,
-                ResourceUtils.getColorAttr(activity, android.R.attr.colorSecondary)
-            )
-        }
-    }
 }
diff --git a/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt b/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt
index fa43edd..aa64d9b 100644
--- a/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt
+++ b/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt
@@ -21,6 +21,7 @@
 import android.content.Context
 import android.content.Intent
 import android.graphics.drawable.Drawable
+import android.os.Bundle
 import androidx.annotation.DrawableRes
 import androidx.lifecycle.ViewModel
 import androidx.lifecycle.ViewModelProvider
@@ -28,7 +29,9 @@
 import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor
 import com.android.systemui.shared.keyguard.shared.model.KeyguardQuickAffordanceSlots
 import com.android.systemui.shared.quickaffordance.data.content.KeyguardQuickAffordanceProviderContract as Contract
+import com.android.systemui.shared.quickaffordance.shared.model.KeyguardQuickAffordancePreviewConstants
 import com.android.wallpaper.R
+import com.android.wallpaper.picker.customization.ui.viewmodel.ScreenPreviewViewModel
 import com.android.wallpaper.picker.undo.domain.interactor.UndoInteractor
 import com.android.wallpaper.picker.undo.ui.viewmodel.UndoViewModel
 import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -51,6 +54,22 @@
 
     @SuppressLint("StaticFieldLeak") private val applicationContext = context.applicationContext
 
+    val preview: ScreenPreviewViewModel
+        get() =
+            ScreenPreviewViewModel(
+                contentProviderAuthorityProvider = {
+                    applicationContext.getString(R.string.lock_screen_preview_provider_authority)
+                },
+                initialExtrasProvider = {
+                    Bundle().apply {
+                        putString(
+                            KeyguardQuickAffordancePreviewConstants.KEY_INITIALLY_SELECTED_SLOT_ID,
+                            selectedSlotId.value,
+                        )
+                    }
+                },
+            )
+
     val undo: UndoViewModel =
         UndoViewModel(
             interactor = undoInteractor,
