diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index 49eb1b0..27ff937 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -865,20 +865,16 @@
     }
 
     private void updateWebViewMultiprocessOptions() {
-        updateSwitchPreference(mWebViewMultiprocess,
-                Settings.Global.getInt(getActivity().getContentResolver(),
-                        Settings.Global.WEBVIEW_MULTIPROCESS, 0) != 0);
+        try {
+            updateSwitchPreference(mWebViewMultiprocess,
+                                   mWebViewUpdateService.isMultiProcessEnabled());
+        } catch (RemoteException e) {
+        }
     }
 
     private void writeWebViewMultiprocessOptions() {
-        boolean value = mWebViewMultiprocess.isChecked();
-        Settings.Global.putInt(getActivity().getContentResolver(),
-                Settings.Global.WEBVIEW_MULTIPROCESS, value ? 1 : 0);
-
         try {
-            String wv_package = mWebViewUpdateService.getCurrentWebViewPackageName();
-            ActivityManager.getService().killPackageDependents(
-                    wv_package, UserHandle.USER_ALL);
+            mWebViewUpdateService.enableMultiProcess(mWebViewMultiprocess.isChecked());
         } catch (RemoteException e) {
         }
     }
diff --git a/src/com/android/settings/dashboard/DashboardAdapter.java b/src/com/android/settings/dashboard/DashboardAdapter.java
index 8b97f04..b2ed592 100644
--- a/src/com/android/settings/dashboard/DashboardAdapter.java
+++ b/src/com/android/settings/dashboard/DashboardAdapter.java
@@ -17,6 +17,7 @@
 
 import android.content.Context;
 import android.content.pm.PackageManager;
+import android.content.res.TypedArray;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.Icon;
 import android.os.Bundle;
@@ -42,6 +43,7 @@
 import com.android.settings.core.instrumentation.MetricsFeatureProvider;
 import com.android.settings.dashboard.conditional.Condition;
 import com.android.settings.dashboard.conditional.ConditionAdapterUtils;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.SuggestionParser;
 import com.android.settingslib.drawer.DashboardCategory;
 import com.android.settingslib.drawer.Tile;
@@ -130,9 +132,11 @@
     public void setCategoriesAndSuggestions(List<DashboardCategory> categories,
             List<Tile> suggestions) {
         // TODO: Better place for tinting?
-        TypedValue tintColor = new TypedValue();
-        mContext.getTheme().resolveAttribute(com.android.internal.R.attr.colorAccent,
-                tintColor, true);
+        final TypedArray a = mContext.obtainStyledAttributes(new int[] {
+            FeatureFactory.getFactory(mContext).getDashboardFeatureProvider(mContext).isEnabled()
+                ? android.R.attr.colorControlNormal : android.R.attr.colorAccent });
+        int tintColor = a.getColor(0, mContext.getColor(android.R.color.white));
+        a.recycle();
         for (int i = 0; i < categories.size(); i++) {
             for (int j = 0; j < categories.get(i).tiles.size(); j++) {
                 final Tile tile = categories.get(i).tiles.get(j);
@@ -141,7 +145,7 @@
                         tile.intent.getComponent().getPackageName())) {
                     // If this drawable is coming from outside Settings, tint it to match the
                     // color.
-                    tile.icon.setTint(tintColor.data);
+                    tile.icon.setTint(tintColor);
                 }
             }
         }
diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java
index 14d1bdd..056efc7 100644
--- a/src/com/android/settings/dashboard/DashboardFragment.java
+++ b/src/com/android/settings/dashboard/DashboardFragment.java
@@ -17,6 +17,7 @@
 
 import android.app.Activity;
 import android.content.Context;
+import android.content.res.TypedArray;
 import android.os.Bundle;
 import android.support.annotation.VisibleForTesting;
 import android.support.v7.preference.Preference;
@@ -298,8 +299,15 @@
         if (mSummaryLoader != null) {
             mSummaryLoader.release();
         }
-        mSummaryLoader = new SummaryLoader(getActivity(), getCategoryKey());
+        final Activity activity = getActivity();
+        mSummaryLoader = new SummaryLoader(activity, getCategoryKey());
         mSummaryLoader.setSummaryConsumer(this);
+        final TypedArray a = activity.obtainStyledAttributes(new int[] {
+            mDashboardFeatureProvider.isEnabled() ? android.R.attr.colorControlNormal
+                : android.R.attr.colorAccent});
+        final int tintColor = a.getColor(0, activity.getColor(android.R.color.white));
+        a.recycle();
+        final String pkgName = activity.getPackageName();
         // Install dashboard tiles.
         for (Tile tile : tiles) {
             final String key = mDashboardFeatureProvider.getDashboardKeyForTile(tile);
@@ -310,16 +318,20 @@
             if (!displayTile(tile)) {
                 continue;
             }
+            if (!pkgName.equals(tile.intent.getComponent().getPackageName())) {
+                // If this drawable is coming from outside Settings, tint it to match the color.
+                tile.icon.setTint(tintColor);
+            }
             if (mDashboardTilePrefKeys.contains(key)) {
                 // Have the key already, will rebind.
                 final Preference preference = mProgressiveDisclosureMixin.findPreference(
                         screen, key);
-                mDashboardFeatureProvider.bindPreferenceToTile(getActivity(), preference, tile, key,
+                mDashboardFeatureProvider.bindPreferenceToTile(activity, preference, tile, key,
                         mPlaceholderPreferenceController.getOrder());
             } else {
                 // Don't have this key, add it.
                 final Preference pref = new Preference(getPrefContext());
-                mDashboardFeatureProvider.bindPreferenceToTile(getActivity(), pref, tile, key,
+                mDashboardFeatureProvider.bindPreferenceToTile(activity, pref, tile, key,
                         mPlaceholderPreferenceController.getOrder());
                 mProgressiveDisclosureMixin.addPreference(screen, pref);
                 mDashboardTilePrefKeys.add(key);
diff --git a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
index dce8a25..7e98918 100644
--- a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
@@ -54,6 +54,7 @@
         implements StorageMeasurement.MeasurementReceiver, LifecycleObserver, OnDestroy {
     private static final String TAG = "StorageItemPreference";
 
+    private static final String IMAGE_MIME_TYPE = "image/*";
     @VisibleForTesting
     static final String PHOTO_KEY = "pref_photos_videos";
     @VisibleForTesting
@@ -233,9 +234,10 @@
     }
 
     private Intent getPhotosIntent() {
-        Intent intent = new Intent(DocumentsContract.ACTION_BROWSE);
-        intent.setData(DocumentsContract.buildRootUri(AUTHORITY_MEDIA, "images_root"));
-        intent.addCategory(Intent.CATEGORY_DEFAULT);
+        Intent intent = new Intent();
+        intent.setAction(android.content.Intent.ACTION_VIEW);
+        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
+        intent.setType(IMAGE_MIME_TYPE);
         return intent;
     }
 
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java
index b0c0b44..7776633 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java
@@ -106,10 +106,8 @@
                 any(UserHandle.class));
 
         Intent intent = argumentCaptor.getValue();
-        assertThat(intent.getAction()).isEqualTo(DocumentsContract.ACTION_BROWSE);
-        assertThat(intent.getData()).isEqualTo(DocumentsContract.buildRootUri(
-                "com.android.providers.media.documents",
-                "images_root"));
+        assertThat(intent.getType()).isEqualTo("image/*");
+        assertThat(intent.getAction()).isEqualTo(android.content.Intent.ACTION_VIEW);
     }
 
     @Test
