diff --git a/app/src/main/java/org/omnirom/control/App.kt b/app/src/main/java/org/omnirom/control/App.kt
index 31b6159..c33cd56 100644
--- a/app/src/main/java/org/omnirom/control/App.kt
+++ b/app/src/main/java/org/omnirom/control/App.kt
@@ -27,6 +27,8 @@
     override fun onCreate() {
         super.onCreate()
         DynamicColors.applyToActivitiesIfAvailable(
-            this, R.style.Theme_OmniControl_Overlay)
+            this,
+            DynamicColorsOptions.Builder().setThemeOverlay(R.style.Theme_OmniControl_Overlay).build()
+        )
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/org/omnirom/control/SettingsActivity.kt b/app/src/main/java/org/omnirom/control/SettingsActivity.kt
index c426b1a..0758d52 100644
--- a/app/src/main/java/org/omnirom/control/SettingsActivity.kt
+++ b/app/src/main/java/org/omnirom/control/SettingsActivity.kt
@@ -17,6 +17,8 @@
  */
 package org.omnirom.control
 
+import android.app.ActivityManager
+import android.os.Build
 import android.os.Bundle
 import android.view.MenuItem
 import android.view.View
@@ -40,6 +42,12 @@
 
         WindowCompat.setDecorFitsSystemWindows(window, false)
 
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+            val td = ActivityManager.TaskDescription.Builder()
+                .setPrimaryColor(getAttrColor(android.R.attr.colorBackground)).build()
+            setTaskDescription(td)
+        }
+
         setContentView(R.layout.settings_activity)
 
         toolbarPlaceHolder = findViewById(R.id.toolbar_placeholder)
@@ -99,10 +107,11 @@
         supportActionBar?.show()
 
         val lp = toolbarPlaceHolder.layoutParams
-        lp.height = resources.getDimensionPixelSize(R.dimen.toolbar_placeholder_height) - Utils.getAttrDimensionPixelSize(
-            applicationContext,
-            android.R.attr.actionBarSize
-        )
+        lp.height =
+            resources.getDimensionPixelSize(R.dimen.toolbar_placeholder_height) - Utils.getAttrDimensionPixelSize(
+                applicationContext,
+                android.R.attr.actionBarSize
+            )
         toolbarPlaceHolder.layoutParams = lp
     }
 
@@ -114,4 +123,11 @@
         lp.height = resources.getDimensionPixelSize(R.dimen.toolbar_placeholder_height)
         toolbarPlaceHolder.layoutParams = lp
     }
+
+    private fun getAttrColor(attr: Int): Int {
+        val ta = obtainStyledAttributes(intArrayOf(attr))
+        val color = ta.getColor(0, 0)
+        ta.recycle()
+        return color
+    }
 }
\ No newline at end of file
diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml
index 037fa81..1b87c64 100644
--- a/app/src/main/res/values-night/colors.xml
+++ b/app/src/main/res/values-night/colors.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-    <color name="colorPrimary">@android:color/system_accent1_100</color>
+    <color name="colorPrimary">@android:color/system_accent1_200</color>
     <color name="overlay_item_background">@android:color/system_neutral1_800</color>
     <color name="overlay_blocker_color">#10ffffff</color>
 </resources>
\ No newline at end of file
