diff --git a/res/values/themes.xml b/res/values/themes.xml
index 427e11f..ef9e1e0 100644
--- a/res/values/themes.xml
+++ b/res/values/themes.xml
@@ -302,10 +302,16 @@
         <item name="suwMarginSides">@dimen/suw_layout_margin_sides</item>
     </style>
 
-    <style name="FallbackHome" parent="@android:style/Theme.Material.Wallpaper.NoTitleBar">
-        <item name="android:windowTranslucentStatus">true</item>
-        <item name="android:windowTranslucentNavigation">true</item>
-        <item name="android:windowAnimationStyle">@null</item>
+    <style name="FallbackHome" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar">
+        <item name="android:windowBackground">@android:color/transparent</item>
+        <item name="android:colorBackgroundCacheHint">@null</item>
+        <item name="android:windowShowWallpaper">true</item>
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:windowTranslucentStatus">false</item>
+        <item name="android:windowTranslucentNavigation">false</item>
+        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
+        <item name="android:statusBarColor">#00000000</item>
+        <item name="android:navigationBarColor">#00000000</item>
     </style>
 
 </resources>
diff --git a/src/com/android/settings/FallbackHome.java b/src/com/android/settings/FallbackHome.java
index d3e6482..deb01a1 100644
--- a/src/com/android/settings/FallbackHome.java
+++ b/src/com/android/settings/FallbackHome.java
@@ -26,6 +26,7 @@
 import android.os.Handler;
 import android.os.Message;
 import android.os.UserManager;
+import android.provider.Settings;
 import android.util.Log;
 
 import java.util.Objects;
@@ -36,6 +37,14 @@
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+
+        // Set ourselves totally black before the device is provisioned so that
+        // we don't flash the wallpaper before SUW
+        if (Settings.Global.getInt(getContentResolver(),
+                Settings.Global.DEVICE_PROVISIONED, 0) == 0) {
+            setTheme(android.R.style.Theme_Black_NoTitleBar_Fullscreen);
+        }
+
         registerReceiver(mReceiver, new IntentFilter(Intent.ACTION_USER_UNLOCKED));
         maybeFinish();
     }
diff --git a/src/com/android/settings/ManagedProfileSetup.java b/src/com/android/settings/ManagedProfileSetup.java
index 677bdf1..ac012b0 100644
--- a/src/com/android/settings/ManagedProfileSetup.java
+++ b/src/com/android/settings/ManagedProfileSetup.java
@@ -32,6 +32,7 @@
 import static android.content.pm.PackageManager.GET_ACTIVITIES;
 import static android.content.pm.PackageManager.GET_META_DATA;
 import static android.content.pm.PackageManager.GET_RESOLVED_FILTER;
+import static android.content.pm.PackageManager.MATCH_DISABLED_COMPONENTS;
 
 /**
  * Listens to {@link Intent.ACTION_BOOT_COMPLETED} and {@link Intent.ACTION_PRE_BOOT_COMPLETED}
@@ -63,7 +64,7 @@
 
         // Resolves activities for the managed profile (which we're running as)
         List<ResolveInfo> resolvedIntents = pm.queryIntentActivities(intent,
-                GET_ACTIVITIES | GET_META_DATA | GET_RESOLVED_FILTER);
+                GET_ACTIVITIES | GET_META_DATA | GET_RESOLVED_FILTER | MATCH_DISABLED_COMPONENTS);
         final int count = resolvedIntents.size();
         for (int i = 0; i < count; i++) {
             ResolveInfo info = resolvedIntents.get(i);
diff --git a/src/com/android/settings/datausage/AppDataUsage.java b/src/com/android/settings/datausage/AppDataUsage.java
index 0e44a9d..7e9be3f 100644
--- a/src/com/android/settings/datausage/AppDataUsage.java
+++ b/src/com/android/settings/datausage/AppDataUsage.java
@@ -40,8 +40,6 @@
 import android.util.ArraySet;
 import android.view.View;
 import android.widget.AdapterView;
-
-import com.android.internal.logging.MetricsLogger;
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.AppHeader;
 import com.android.settings.R;
@@ -52,7 +50,6 @@
 import com.android.settingslib.net.ChartDataLoader;
 import com.android.settingslib.net.UidDetailProvider;
 
-import static android.net.NetworkPolicyManager.POLICY_NONE;
 import static android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND;
 
 public class AppDataUsage extends DataUsageBase implements Preference.OnPreferenceChangeListener,
@@ -209,7 +206,9 @@
     @Override
     public void onResume() {
         super.onResume();
-        mDataSaverBackend.addListener(this);
+        if (mDataSaverBackend != null) {
+            mDataSaverBackend.addListener(this);
+        }
         mPolicy = services.mPolicyEditor.getPolicy(mTemplate);
         getLoaderManager().restartLoader(LOADER_CHART_DATA,
                 ChartDataLoader.buildArgs(mTemplate, mAppItem), mChartDataCallbacks);
@@ -219,7 +218,9 @@
     @Override
     public void onPause() {
         super.onPause();
-        mDataSaverBackend.remListener(this);
+        if (mDataSaverBackend != null) {
+            mDataSaverBackend.remListener(this);
+        }
     }
 
     @Override
diff --git a/src/com/android/settings/datausage/BillingCycleSettings.java b/src/com/android/settings/datausage/BillingCycleSettings.java
index be05af7..a17c8fc 100644
--- a/src/com/android/settings/datausage/BillingCycleSettings.java
+++ b/src/com/android/settings/datausage/BillingCycleSettings.java
@@ -173,11 +173,13 @@
 
 
             final LayoutInflater dialogInflater = LayoutInflater.from(context);
+            final boolean isLimit = getArguments().getBoolean(EXTRA_LIMIT);
             mView = dialogInflater.inflate(R.layout.data_usage_bytes_editor, null, false);
             setupPicker((EditText) mView.findViewById(R.id.bytes),
                     (Spinner) mView.findViewById(R.id.size_spinner));
             return new AlertDialog.Builder(context)
-                    .setTitle(R.string.data_usage_warning_editor_title)
+                    .setTitle(isLimit ? R.string.data_usage_limit_editor_title
+                            : R.string.data_usage_warning_editor_title)
                     .setView(mView)
                     .setPositiveButton(R.string.data_usage_cycle_editor_positive, this)
                     .create();
diff --git a/src/com/android/settings/print/PrintSettingsFragment.java b/src/com/android/settings/print/PrintSettingsFragment.java
index c1fbfbb..82a18ee 100644
--- a/src/com/android/settings/print/PrintSettingsFragment.java
+++ b/src/com/android/settings/print/PrintSettingsFragment.java
@@ -201,7 +201,6 @@
                 ComponentName componentName = service.getComponentName();
                 preference.setKey(componentName.flattenToString());
 
-                preference.setOrder(Math.min(ORDER_LAST - 1, componentName.hashCode()));
                 preference.setFragment(PrintServiceSettingsFragment.class.getName());
                 preference.setPersistent(false);
 
diff --git a/src/com/android/settings/vpn2/AppDialogFragment.java b/src/com/android/settings/vpn2/AppDialogFragment.java
index 004ad80..097001a 100644
--- a/src/com/android/settings/vpn2/AppDialogFragment.java
+++ b/src/com/android/settings/vpn2/AppDialogFragment.java
@@ -138,7 +138,7 @@
         final int userId = UserHandle.getUserId(mPackageInfo.applicationInfo.uid);
         try {
             if (mPackageInfo.packageName.equals(getConnectedPackage(mService, userId))) {
-                mService.setAlwaysOnVpnPackage(userId, null);
+                mService.setAlwaysOnVpnPackage(userId, null, /* lockdownEnabled */ false);
                 mService.prepareVpn(mPackageInfo.packageName, VpnConfig.LEGACY_VPN, userId);
             }
         } catch (RemoteException e) {
diff --git a/src/com/android/settings/vpn2/AppManagementFragment.java b/src/com/android/settings/vpn2/AppManagementFragment.java
index f8e30f9..8ad64d4 100644
--- a/src/com/android/settings/vpn2/AppManagementFragment.java
+++ b/src/com/android/settings/vpn2/AppManagementFragment.java
@@ -176,7 +176,8 @@
         if (mUserId == UserHandle.USER_SYSTEM) {
             VpnUtils.clearLockdownVpn(getContext());
         }
-        mConnectivityManager.setAlwaysOnVpnPackageForUser(mUserId, isEnabled ? mPackageName : null);
+        mConnectivityManager.setAlwaysOnVpnPackageForUser(mUserId, isEnabled ? mPackageName : null,
+                /* lockdownEnabled */ false);
         if (isEnabled && !isVpnAlwaysOn()) {
             CannotConnectFragment.show(this, mVpnLabel);
         }
diff --git a/src/com/android/settings/vpn2/ConfigDialogFragment.java b/src/com/android/settings/vpn2/ConfigDialogFragment.java
index 5e4a7d9..0dbaa9a 100644
--- a/src/com/android/settings/vpn2/ConfigDialogFragment.java
+++ b/src/com/android/settings/vpn2/ConfigDialogFragment.java
@@ -153,7 +153,8 @@
             }
 
             final ConnectivityManager conn = ConnectivityManager.from(getActivity());
-            conn.setAlwaysOnVpnPackageForUser(UserHandle.myUserId(), null);
+            conn.setAlwaysOnVpnPackageForUser(UserHandle.myUserId(), null,
+                    /* lockdownEnabled */ false);
             VpnUtils.setLockdownVpn(getContext(), profile.key);
         } else {
             // update only if lockdown vpn has been changed
