diff --git a/Android.bp b/Android.bp
index 5e32685..8ea60ce 100644
--- a/Android.bp
+++ b/Android.bp
@@ -22,6 +22,7 @@
     "androidx.recyclerview_recyclerview",
     "OmniLib",
     "OmniLibCore",
+    "OmniPreferenceTheme"
   ],
 
   kotlincflags: ["-Xjvm-default=enable"],
diff --git a/app/src/main/java/org/omnirom/control/AbstractSettingsFragment.kt b/app/src/main/java/org/omnirom/control/AbstractSettingsFragment.kt
index 28875f4..53cc3f0 100644
--- a/app/src/main/java/org/omnirom/control/AbstractSettingsFragment.kt
+++ b/app/src/main/java/org/omnirom/control/AbstractSettingsFragment.kt
@@ -48,7 +48,8 @@
         (activity as? SettingsActivity)?.updateFragmentTitle(
             getFragmentTitle(),
             getFragmentSummary(),
-            getFragmentIcon()
+            getFragmentIcon(),
+            false
         )
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/org/omnirom/control/ApplicationManager.kt b/app/src/main/java/org/omnirom/control/ApplicationManager.kt
index 25a30fb..0d1268b 100644
--- a/app/src/main/java/org/omnirom/control/ApplicationManager.kt
+++ b/app/src/main/java/org/omnirom/control/ApplicationManager.kt
@@ -21,14 +21,12 @@
 import android.content.Context
 import android.content.Intent
 import android.content.pm.PackageManager
-import android.graphics.drawable.Drawable
-import android.graphics.drawable.BitmapDrawable
-
 import android.graphics.Bitmap
 import android.graphics.Canvas
 import android.graphics.Paint
-
 import android.graphics.PaintFlagsDrawFilter
+import android.graphics.drawable.BitmapDrawable
+import android.graphics.drawable.Drawable
 
 class ApplicationManager(context: Context) {
     private val mContext: Context = context
@@ -54,6 +52,7 @@
     fun startApp(app: Application) {
         val intent = Intent()
         intent.component = app.getComponentName()
+        intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
         try {
             mContext.startActivity(intent)
         } catch (e: Exception) {
@@ -63,6 +62,7 @@
     fun startApp(component: ComponentName) {
         val intent = Intent()
         intent.component = component
+        intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
         try {
             mContext.startActivity(intent)
         } catch (e: Exception) {
diff --git a/app/src/main/java/org/omnirom/control/GridViewFragment.kt b/app/src/main/java/org/omnirom/control/GridViewFragment.kt
index 87073fc..4330acc 100644
--- a/app/src/main/java/org/omnirom/control/GridViewFragment.kt
+++ b/app/src/main/java/org/omnirom/control/GridViewFragment.kt
@@ -285,9 +285,10 @@
         super.onResume()
         (activity as? AppCompatActivity)?.supportActionBar?.setDisplayHomeAsUpEnabled(false)
         (activity as? SettingsActivity)?.updateFragmentTitle(
-            resources.getString(R.string.app_title),
+            resources.getString(R.string.app_name),
             "",
-            R.drawable.ic_settings_grid
+            0,
+            true
         )
         createGridItems()
         gridItemsAdapter.notifyDataSetChanged()
diff --git a/app/src/main/java/org/omnirom/control/OverlaysFragment.kt b/app/src/main/java/org/omnirom/control/OverlaysFragment.kt
index c51e05c..88b32d8 100644
--- a/app/src/main/java/org/omnirom/control/OverlaysFragment.kt
+++ b/app/src/main/java/org/omnirom/control/OverlaysFragment.kt
@@ -480,7 +480,8 @@
         (activity as? SettingsActivity)?.updateFragmentTitle(
             getFragmentTitle(),
             getFragmentSummary(),
-            getFragmentIcon()
+            getFragmentIcon(),
+            false
         )
     }
 
diff --git a/app/src/main/java/org/omnirom/control/SettingsActivity.kt b/app/src/main/java/org/omnirom/control/SettingsActivity.kt
index 55965e7..5e1e4b7 100644
--- a/app/src/main/java/org/omnirom/control/SettingsActivity.kt
+++ b/app/src/main/java/org/omnirom/control/SettingsActivity.kt
@@ -18,6 +18,7 @@
 package org.omnirom.control
 
 import android.os.Bundle
+import android.util.TypedValue
 import android.view.MenuItem
 import android.view.View
 import android.widget.ImageView
@@ -58,8 +59,13 @@
         return super.onOptionsItemSelected(item)
     }
 
-    fun updateFragmentTitle(title: String, summary: String, icon: Int) {
+    fun updateFragmentTitle(title: String, summary: String, icon: Int, rootScreen: Boolean) {
         (findViewById<TextView>(R.id.fragment_title)).text = title
+        if (rootScreen) {
+            (findViewById<TextView>(R.id.fragment_title)).setTextAppearance(R.style.Theme_OmniControl_TitleTextStyle)
+        } else {
+            (findViewById<TextView>(R.id.fragment_title)).setTextAppearance(R.style.Theme_OmniControl_GridItem_TitleTextStyle)
+        }
         if (summary.isNotEmpty()) {
             (findViewById<TextView>(R.id.fragment_summary)).visibility = View.VISIBLE
             (findViewById<TextView>(R.id.fragment_summary)).text = summary
diff --git a/app/src/main/res/layout/settings_activity.xml b/app/src/main/res/layout/settings_activity.xml
index d909a2f..d5492cb 100644
--- a/app/src/main/res/layout/settings_activity.xml
+++ b/app/src/main/res/layout/settings_activity.xml
@@ -1,7 +1,7 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    xmlns:tools="http://schemas.android.com/tools"
     android:orientation="vertical">
 
     <androidx.appcompat.widget.Toolbar
@@ -14,6 +14,7 @@
         android:layout_height="wrap_content"
         android:layout_gravity="center_vertical"
         android:layout_marginStart="@dimen/fragment_side_margin"
+        android:layout_marginEnd="@dimen/fragment_side_margin"
         android:orientation="horizontal">
 
         <ImageView
@@ -38,8 +39,8 @@
                 android:ellipsize="end"
                 android:gravity="center_vertical"
                 android:maxLines="1"
-                android:textAppearance="@style/Theme.OmniControl.TitleTextStyle"
-                tools:text="aaaa"/>
+                android:textAppearance="@style/Theme.OmniControl.GridItem.TitleTextStyle"
+                tools:text="aaaa" />
 
             <TextView
                 android:id="@+id/fragment_summary"
@@ -48,9 +49,9 @@
                 android:ellipsize="end"
                 android:gravity="center_vertical"
                 android:maxLines="1"
-                android:textColor="?android:attr/textColorSecondary"
                 android:textAppearance="@style/Theme.OmniControl.GridItem.SummaryTextStyle"
-                tools:text="vvvv"/>
+                android:textColor="?android:attr/textColorSecondary"
+                tools:text="vvvv" />
 
         </LinearLayout>
     </LinearLayout>
@@ -64,4 +65,4 @@
         android:layout_marginEnd="@dimen/fragment_side_margin"
         android:layout_weight="1" />
 
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index 549961e..5375713 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -24,4 +24,8 @@
     <dimen name="overlay_fragment_side_margin">10dp</dimen>
     <dimen name="alert_dialog_padding_material">20dp</dimen>
     <dimen name="color_preset_item_size">40dp</dimen>
+    <dimen name="title_text_size">20sp</dimen>
+    <dimen name="summary_text_size">14sp</dimen>
+    <dimen name="pref_title_text_size">18sp</dimen>
+    <dimen name="root_title_text_size">32sp</dimen>
 </resources>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 4a71f20..c254185 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,11 +1,10 @@
 <resources>
     <string name="app_name">Control Center</string>
-    <string name="app_title">OmniROM Control Center</string>
 
     <string name="weather_config_title">Weather provider</string>
     <string name="weather_config_summary">Configure provider settings</string>
     <string name="omni_remote_title">Remote access</string>
-    <string name="omni_remote_summary">VNC server to allow remote connection to device</string>
+    <string name="omni_remote_summary">VNC server for remote connection</string>
     <string name="matlog_title">MatLog</string>
     <string name="matlog_summary">Show logcat</string>
     <string name="changelog_title">Changelog</string>
@@ -15,11 +14,11 @@
     <string name="omnistore_title">OmniStore</string>
     <string name="omnistore_summary">Download applications</string>
     <string name="wallpaper_title">Wallpapers</string>
-    <string name="wallpaper_summary">Browse OmniROM themed wallpapers</string>
+    <string name="wallpaper_summary">OmniROM themed wallpapers</string>
     <string name="applist_title">Applications</string>
     <string name="settings_title">Settings</string>
     <string name="weather_current_title">Current weather</string>
-    <string name="weather_current_summary">Show current weather and configure provider</string>
+    <string name="weather_current_summary">Weather service configuration</string>
 
     <string name="bars_settings_title">Bars</string>
     <string name="bars_settings_summary">Status bar options</string>
@@ -48,7 +47,7 @@
     <string name="device_settings_summary">Advanced device specific options</string>
 
     <string name="overlays_settings_title">Styles</string>
-    <string name="overlays_settings_summary">Change system default styles and colors</string>
+    <string name="overlays_settings_summary">System default styles and colors</string>
     <string name="icon_shape_title">Icon shape</string>
     <string name="primary_color_title">Neutral color</string>
     <string name="accent_color_title">Accent color</string>
@@ -58,13 +57,13 @@
     <string name="doze_on_charge_summary">Wake screen when charging</string>
 
     <string name="lockscreen_item_title">Lock screen items</string>
-    <string name="lockscreen_item_summary">Configure visibility of lock screen items</string>
+    <string name="lockscreen_item_summary">Visibility of lock screen items</string>
     <string name="lockscreen_weather_title">Show weather condition</string>
     <string name="lockscreen_weather_summary">Show current weather condition and temperature</string>
     <string name="lockscreen_weather_enabled_info">Requires enablement of weather service</string>
 
     <string name="system_update_title">System updates</string>
-    <string name="system_update_summary">Download and install OmniROM updates</string>
+    <string name="system_update_summary">Download and install updates</string>
 
     <string name="system_category">System</string>
     <string name="show_cpu_title">Show CPU info</string>
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index aa03fdc..ee8b266 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -8,17 +8,20 @@
         <item name="android:windowLightNavigationBar">?attr/isLightTheme</item>
         <item name="android:windowSplashScreenIconBackgroundColor">@color/ic_launcher_background</item>
         <item name="android:windowBackground">@color/windowBackground</item>
+        <item name="preferenceTheme">@style/Omni.PreferenceTheme</item>
+        <item name="android:switchStyle">@style/Omni.SwitchStyle</item>
+        <item name="android:textAppearanceListItem">@style/Omni.PreferenceTitle</item>
     </style>
 
-    <style name="Theme.OmniControl.TitleTextStyle" parent="TextAppearance.Material3.TitleMedium">
-        <item name="android:textSize">24sp</item>
+    <style name="Theme.OmniControl.TitleTextStyle" parent="TextAppearance.Material3.BodyMedium">
+        <item name="android:textSize">@dimen/root_title_text_size</item>
     </style>
 
     <style name="Theme.OmniControl.GridItem.TitleTextStyle" parent="TextAppearance.Material3.BodyMedium">
-        <item name="android:textSize">20sp</item>
+        <item name="android:textSize">@dimen/title_text_size</item>
     </style>
 
     <style name="Theme.OmniControl.GridItem.SummaryTextStyle" parent="TextAppearance.Material3.BodyMedium">
-        <item name="android:textSize">14sp</item>
+        <item name="android:textSize">@dimen/summary_text_size</item>
     </style>
 </resources>
\ No newline at end of file
