diff --git a/main/res/values-v22/styles.xml b/main/res/values-v22/styles.xml
index 2cf0927..a3c7cee 100644
--- a/main/res/values-v22/styles.xml
+++ b/main/res/values-v22/styles.xml
@@ -17,7 +17,9 @@
 
 <resources>
 
-    <style name="SudAlertDialogTheme" parent="android:Theme.DeviceDefault.Dialog.Alert" />
+    <style name="SudAlertDialogTheme" parent="android:Theme.DeviceDefault.Dialog.Alert">
+        <item name="android:colorBackground">@color/sud_glif_v3_dialog_background_color_dark</item>
+    </style>
 
     <style name="SudAlertDialogTheme.Light" parent="android:Theme.DeviceDefault.Light.Dialog.Alert" />
 </resources>
diff --git a/main/res/values/colors.xml b/main/res/values/colors.xml
index 66e1c2f..b612b9d 100644
--- a/main/res/values/colors.xml
+++ b/main/res/values/colors.xml
@@ -42,11 +42,13 @@
     <!-- GLIF colors -->
     <color name="sud_color_accent_glif_dark">#ff4285f4</color>
     <color name="sud_color_accent_glif_light">#ff4285f4</color>
-    <color name="sud_color_accent_glif_v3">#ff1a73e8</color>
+    <color name="sud_color_accent_glif_v3_light">#ff1a73e8</color>
+    <color name="sud_color_accent_glif_v3_dark">#ff8ab4f8</color>
     <color name="sud_glif_background_color_dark">#ff000000</color>
     <color name="sud_glif_background_color_light">#ffffffff</color>
     <color name="sud_glif_edit_text_bg_dark_color">#ff202124</color>
     <color name="sud_glif_edit_text_bg_light_color">#0a000000</color>
+    <color name="sud_glif_v3_dialog_background_color_dark">#ff3c4043</color>
     <color name="sud_glif_v3_nav_bar_color_light">#ffffffff</color>
     <color name="sud_glif_v3_nav_bar_divider_color_light">#1f000000</color>
 
diff --git a/main/res/values/styles.xml b/main/res/values/styles.xml
index 9f64b2c..28306b2 100644
--- a/main/res/values/styles.xml
+++ b/main/res/values/styles.xml
@@ -222,14 +222,15 @@
     </style>
 
     <style name="SudThemeGlifV3" parent="SudThemeGlifV2">
-        <item name="colorAccent">@color/sud_color_accent_glif_v3</item>
+        <item name="colorAccent">@color/sud_color_accent_glif_v3_dark</item>
+        <item name="colorBackgroundFloating">@color/sud_glif_v3_dialog_background_color_dark</item>
         <item name="sudButtonAllCaps">false</item>
         <item name="sudButtonCornerRadius">@dimen/sud_glif_v3_button_corner_radius</item>
         <item name="sudButtonFontFamily">@string/sudFontSecondaryMedium</item>
     </style>
 
     <style name="SudBaseThemeGlifV3.Light" parent="SudThemeGlifV2.Light">
-        <item name="colorAccent">@color/sud_color_accent_glif_v3</item>
+        <item name="colorAccent">@color/sud_color_accent_glif_v3_light</item>
         <item name="sudButtonAllCaps">false</item>
         <item name="sudButtonCornerRadius">@dimen/sud_glif_v3_button_corner_radius</item>
         <item name="sudButtonFontFamily">@string/sudFontSecondaryMedium</item>
@@ -638,13 +639,14 @@
 
     <style name="SudAlertDialogTheme" parent="Theme.AppCompat.Dialog.Alert">
         <item name="android:textAllCaps">false</item>
-        <item name="colorAccent">@color/sud_color_accent_glif_v3</item>
+        <item name="android:colorBackground">@color/sud_glif_v3_dialog_background_color_dark</item>
+        <item name="colorAccent">@color/sud_color_accent_glif_v3_dark</item>
         <item name="dialogCornerRadius">@dimen/sud_glif_alert_dialog_corner_radius</item>
     </style>
 
     <style name="SudAlertDialogTheme.Light" parent="Theme.AppCompat.Light.Dialog.Alert">
         <item name="android:textAllCaps">false</item>
-        <item name="colorAccent">@color/sud_color_accent_glif_v3</item>
+        <item name="colorAccent">@color/sud_color_accent_glif_v3_light</item>
         <item name="dialogCornerRadius">@dimen/sud_glif_alert_dialog_corner_radius</item>
     </style>
 
diff --git a/main/src/com/google/android/setupdesign/items/ExpandableSwitchItem.java b/main/src/com/google/android/setupdesign/items/ExpandableSwitchItem.java
index 1e0551b..28b41c9 100644
--- a/main/src/com/google/android/setupdesign/items/ExpandableSwitchItem.java
+++ b/main/src/com/google/android/setupdesign/items/ExpandableSwitchItem.java
@@ -28,6 +28,7 @@
 import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
 import androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat;
 import android.util.AttributeSet;
+import android.view.Gravity;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.CompoundButton.OnCheckedChangeListener;
@@ -67,6 +68,7 @@
 
   public ExpandableSwitchItem() {
     super();
+    setIconGravity(Gravity.TOP);
   }
 
   public ExpandableSwitchItem(Context context, AttributeSet attrs) {
@@ -74,6 +76,7 @@
     final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SudExpandableSwitchItem);
     collapsedSummary = a.getText(R.styleable.SudExpandableSwitchItem_sudCollapsedSummary);
     expandedSummary = a.getText(R.styleable.SudExpandableSwitchItem_sudExpandedSummary);
+    setIconGravity(a.getInt(R.styleable.SudItem_sudIconGravity, Gravity.TOP));
     a.recycle();
   }
 
diff --git a/main/src/com/google/android/setupdesign/items/Item.java b/main/src/com/google/android/setupdesign/items/Item.java
index 7aa6297..6f0cea3 100644
--- a/main/src/com/google/android/setupdesign/items/Item.java
+++ b/main/src/com/google/android/setupdesign/items/Item.java
@@ -43,7 +43,7 @@
   private CharSequence title;
   private boolean visible = true;
   @ColorInt private int iconTint = Color.TRANSPARENT;
-  private int iconGravity = Gravity.CENTER;
+  private int iconGravity = Gravity.CENTER_VERTICAL;
 
   public Item() {
     super();
@@ -60,7 +60,7 @@
     layoutRes = a.getResourceId(R.styleable.SudItem_android_layout, getDefaultLayoutResource());
     visible = a.getBoolean(R.styleable.SudItem_android_visible, true);
     iconTint = a.getColor(R.styleable.SudItem_sudIconTint, Color.TRANSPARENT);
-    iconGravity = a.getInt(R.styleable.SudItem_sudIconGravity, Gravity.CENTER);
+    iconGravity = a.getInt(R.styleable.SudItem_sudIconGravity, Gravity.CENTER_VERTICAL);
     a.recycle();
   }
 
diff --git a/main/src/com/google/android/setupdesign/util/Partner.java b/main/src/com/google/android/setupdesign/util/Partner.java
index b35237c..6b97bf6 100644
--- a/main/src/com/google/android/setupdesign/util/Partner.java
+++ b/main/src/com/google/android/setupdesign/util/Partner.java
@@ -147,11 +147,12 @@
                 intent,
                 PackageManager.MATCH_SYSTEM_ONLY
                     | PackageManager.MATCH_DIRECT_BOOT_AWARE
-                    | PackageManager.MATCH_DIRECT_BOOT_UNAWARE);
+                    | PackageManager.MATCH_DIRECT_BOOT_UNAWARE
+                    | PackageManager.MATCH_DISABLED_COMPONENTS);
       } else {
         // On versions before N, direct boot doesn't exist. And the MATCH_SYSTEM_ONLY flag
         // doesn't exist so we filter for system apps in code below.
-        receivers = pm.queryBroadcastReceivers(intent, 0);
+        receivers = pm.queryBroadcastReceivers(intent, PackageManager.GET_DISABLED_COMPONENTS);
       }
 
       for (ResolveInfo info : receivers) {
