diff --git a/src/com/android/customization/picker/mode/ui/viewmodel/DarkModeViewModel.kt b/src/com/android/customization/picker/mode/ui/viewmodel/DarkModeViewModel.kt
index 2bcb644..f51d966 100644
--- a/src/com/android/customization/picker/mode/ui/viewmodel/DarkModeViewModel.kt
+++ b/src/com/android/customization/picker/mode/ui/viewmodel/DarkModeViewModel.kt
@@ -22,6 +22,7 @@
 import javax.inject.Inject
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.asStateFlow
 import kotlinx.coroutines.flow.combine
 
 @ViewModelScoped
@@ -31,7 +32,8 @@
     private val isDarkMode = interactor.isDarkMode
     val isEnabled = interactor.isEnabled
 
-    private val overridingIsDarkMode = MutableStateFlow<Boolean?>(null)
+    private val _overridingIsDarkMode = MutableStateFlow<Boolean?>(null)
+    val overridingIsDarkMode = _overridingIsDarkMode.asStateFlow()
     val previewingIsDarkMode =
         combine(overridingIsDarkMode, isDarkMode, isEnabled) { override, current, isEnabled ->
             if (isEnabled) {
@@ -41,7 +43,8 @@
 
     val toggleDarkMode =
         combine(overridingIsDarkMode, isDarkMode) { override, current ->
-            { overridingIsDarkMode.value = override?.not() ?: !current }
+            // Only set override if its value is different from current, else set to null
+            { _overridingIsDarkMode.value = if (override == null) !current else null }
         }
 
     val onApply: Flow<(suspend () -> Unit)?> =
@@ -55,6 +58,6 @@
         }
 
     fun resetPreview() {
-        overridingIsDarkMode.value = null
+        _overridingIsDarkMode.value = null
     }
 }
diff --git a/src/com/android/wallpaper/customization/ui/binder/ThemePickerCustomizationOptionBinder.kt b/src/com/android/wallpaper/customization/ui/binder/ThemePickerCustomizationOptionBinder.kt
index 469db6d..6bdd6ce 100644
--- a/src/com/android/wallpaper/customization/ui/binder/ThemePickerCustomizationOptionBinder.kt
+++ b/src/com/android/wallpaper/customization/ui/binder/ThemePickerCustomizationOptionBinder.kt
@@ -238,6 +238,7 @@
         context: Context,
         clockHostView: View,
         viewModel: CustomizationPickerViewModel2,
+        colorUpdateViewModel: ColorUpdateViewModel,
         lifecycleOwner: LifecycleOwner,
         clockViewFactory: ClockViewFactory,
     ) {
@@ -295,12 +296,12 @@
                             clockPickerViewModel.previewingSeedColor,
                             clockPickerViewModel.previewingClock,
                             clockPickerViewModel.previewingFontAxisMap,
-                            ::Triple,
+                            colorUpdateViewModel.systemColorsUpdated,
+                            ::Quadruple,
                         )
-                        .collect { triple ->
-                            val (color, clock, axisMap) = triple
+                        .collect { quadruple ->
+                            val (color, clock, axisMap, _) = quadruple
                             clockViewFactory.updateColor(clock.clockId, color)
-
                             val axisList = axisMap.map { ClockFontAxisSetting(it.key, it.value) }
                             clockViewFactory.updateFontAxes(clock.clockId, axisList)
                         }
@@ -308,4 +309,6 @@
             }
         }
     }
+
+    data class Quadruple<A, B, C, D>(val first: A, val second: B, val third: C, val fourth: D)
 }
diff --git a/src/com/android/wallpaper/picker/common/preview/ui/binder/ThemePickerWorkspaceCallbackBinder.kt b/src/com/android/wallpaper/picker/common/preview/ui/binder/ThemePickerWorkspaceCallbackBinder.kt
index 0656696..6952d91 100644
--- a/src/com/android/wallpaper/picker/common/preview/ui/binder/ThemePickerWorkspaceCallbackBinder.kt
+++ b/src/com/android/wallpaper/picker/common/preview/ui/binder/ThemePickerWorkspaceCallbackBinder.kt
@@ -39,6 +39,7 @@
 import com.android.wallpaper.customization.ui.viewmodel.ThemePickerCustomizationOptionsViewModel
 import com.android.wallpaper.model.Screen
 import com.android.wallpaper.picker.common.preview.ui.binder.WorkspaceCallbackBinder.Companion.sendMessage
+import com.android.wallpaper.picker.customization.ui.viewmodel.ColorUpdateViewModel
 import com.android.wallpaper.picker.customization.ui.viewmodel.CustomizationOptionsViewModel
 import javax.inject.Inject
 import javax.inject.Singleton
@@ -56,12 +57,14 @@
     override fun bind(
         workspaceCallback: Message,
         viewModel: CustomizationOptionsViewModel,
+        colorUpdateViewModel: ColorUpdateViewModel,
         screen: Screen,
         lifecycleOwner: LifecycleOwner,
     ) {
         defaultWorkspaceCallbackBinder.bind(
             workspaceCallback = workspaceCallback,
             viewModel = viewModel,
+            colorUpdateViewModel = colorUpdateViewModel,
             screen = screen,
             lifecycleOwner = lifecycleOwner,
         )
@@ -158,10 +161,11 @@
                         launch {
                             combine(
                                     viewModel.colorPickerViewModel2.previewingColorOption,
-                                    viewModel.darkModeViewModel.previewingIsDarkMode,
-                                    ::Pair,
+                                    viewModel.darkModeViewModel.overridingIsDarkMode,
+                                    colorUpdateViewModel.systemColorsUpdated,
+                                    ::Triple,
                                 )
-                                .collect { (colorModel, darkMode) ->
+                                .collect { (colorModel, darkMode, _) ->
                                     val bundle =
                                         Bundle().apply {
                                             if (colorModel != null) {
@@ -174,7 +178,9 @@
                                                 putIntArray(KEY_COLOR_VALUES, colors)
                                             }
 
-                                            putBoolean(KEY_DARK_MODE, darkMode)
+                                            if (darkMode != null) {
+                                                putBoolean(KEY_DARK_MODE, darkMode)
+                                            }
                                         }
                                     workspaceCallback.sendMessage(MESSAGE_ID_UPDATE_COLOR, bundle)
                                 }
