diff --git a/src/com/android/settings/ActivityPicker.java b/src/com/android/settings/ActivityPicker.java
index edbccc3..7c26923 100644
--- a/src/com/android/settings/ActivityPicker.java
+++ b/src/com/android/settings/ActivityPicker.java
@@ -159,7 +159,7 @@
                     Resources res = packageManager.getResourcesForApplication(
                             iconResource.packageName);
                     icon = res.getDrawable(res.getIdentifier(
-                            iconResource.resourceName, null, null));
+                            iconResource.resourceName, null, null), null);
                 } catch (NameNotFoundException e) {
                     // Ignore
                 }
diff --git a/src/com/android/settings/MasterClear.java b/src/com/android/settings/MasterClear.java
index bbd98fb..6a0a249 100644
--- a/src/com/android/settings/MasterClear.java
+++ b/src/com/android/settings/MasterClear.java
@@ -212,7 +212,7 @@
             try {
                 if (desc.iconId != 0) {
                     Context authContext = context.createPackageContext(desc.packageName, 0);
-                    icon = authContext.getResources().getDrawable(desc.iconId);
+                    icon = authContext.getDrawable(desc.iconId);
                 }
             } catch (PackageManager.NameNotFoundException e) {
                 Log.w(TAG, "No icon for account type " + desc.type);
diff --git a/src/com/android/settings/RegulatoryInfoDisplayActivity.java b/src/com/android/settings/RegulatoryInfoDisplayActivity.java
index 171059c..c674f13 100644
--- a/src/com/android/settings/RegulatoryInfoDisplayActivity.java
+++ b/src/com/android/settings/RegulatoryInfoDisplayActivity.java
@@ -63,7 +63,7 @@
         int resId = getResourceId();
         if (resId != 0) {
             try {
-                Drawable d = resources.getDrawable(resId);
+                Drawable d = getDrawable(resId);
                 // set to false if the width or height is <= 2
                 // (missing PNG can return an empty 2x2 pixel Drawable)
                 regulatoryInfoDrawableExists = (d.getIntrinsicWidth() > 2
diff --git a/src/com/android/settings/UserSpinnerAdapter.java b/src/com/android/settings/UserSpinnerAdapter.java
index 001dfc4..eb4a118 100644
--- a/src/com/android/settings/UserSpinnerAdapter.java
+++ b/src/com/android/settings/UserSpinnerAdapter.java
@@ -51,7 +51,7 @@
             UserInfo userInfo = um.getUserInfo(mUserHandle.getIdentifier());
             if (userInfo.isManagedProfile()) {
                 name = context.getString(R.string.managed_user_title);
-                icon = Resources.getSystem().getDrawable(
+                icon = context.getDrawable(
                     com.android.internal.R.drawable.ic_corp_icon);
             } else {
                 name = userInfo.name;
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 04160fb..88536c4 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -211,7 +211,8 @@
                         Bundle metaData = resolveInfo.activityInfo.metaData;
 
                         if (res != null && metaData != null) {
-                            icon = res.getDrawable(metaData.getInt(META_DATA_PREFERENCE_ICON));
+                            icon = res.getDrawable(
+                                    metaData.getInt(META_DATA_PREFERENCE_ICON), null);
                             title = res.getString(metaData.getInt(META_DATA_PREFERENCE_TITLE));
                             summary = res.getString(metaData.getInt(META_DATA_PREFERENCE_SUMMARY));
                         }
diff --git a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
index 9fe224e..f38d482 100644
--- a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
@@ -231,7 +231,7 @@
 
         ImageView imageView = (ImageView) capabilityView.findViewById(
                 com.android.internal.R.id.perm_icon);
-        imageView.setImageDrawable(getResources().getDrawable(
+        imageView.setImageDrawable(getActivity().getDrawable(
                 com.android.internal.R.drawable.ic_text_dot));
 
         TextView labelView = (TextView) capabilityView.findViewById(
@@ -257,7 +257,7 @@
 
             imageView = (ImageView) capabilityView.findViewById(
                     com.android.internal.R.id.perm_icon);
-            imageView.setImageDrawable(getResources().getDrawable(
+            imageView.setImageDrawable(getActivity().getDrawable(
                     com.android.internal.R.drawable.ic_text_dot));
 
             labelView = (TextView) capabilityView.findViewById(
diff --git a/src/com/android/settings/accounts/AuthenticatorHelper.java b/src/com/android/settings/accounts/AuthenticatorHelper.java
index cc8a6d5..3757d97 100644
--- a/src/com/android/settings/accounts/AuthenticatorHelper.java
+++ b/src/com/android/settings/accounts/AuthenticatorHelper.java
@@ -111,7 +111,7 @@
                 Context authContext = context.createPackageContextAsUser(desc.packageName, 0,
                         mUserHandle);
                 icon = mContext.getPackageManager().getUserBadgedIcon(
-                        authContext.getResources().getDrawable(desc.iconId), mUserHandle);
+                        authContext.getDrawable(desc.iconId), mUserHandle);
                 synchronized (mAccTypeIconCache) {
                     mAccTypeIconCache.put(accountType, icon);
                 }
diff --git a/src/com/android/settings/accounts/ChooseAccountActivity.java b/src/com/android/settings/accounts/ChooseAccountActivity.java
index e52d640..5e7e81e 100644
--- a/src/com/android/settings/accounts/ChooseAccountActivity.java
+++ b/src/com/android/settings/accounts/ChooseAccountActivity.java
@@ -216,7 +216,7 @@
                 AuthenticatorDescription desc = mTypeToAuthDescription.get(accountType);
                 Context authContext = createPackageContextAsUser(desc.packageName, 0, mUserHandle);
                 icon = getPackageManager().getUserBadgedIcon(
-                        authContext.getResources().getDrawable(desc.iconId), mUserHandle);
+                        authContext.getDrawable(desc.iconId), mUserHandle);
             } catch (PackageManager.NameNotFoundException e) {
                 // TODO: place holder icon for missing account icons?
                 Log.w(TAG, "No icon name for account type " + accountType);
diff --git a/src/com/android/settings/applications/AppOpsState.java b/src/com/android/settings/applications/AppOpsState.java
index 580c44e..1ab3c73 100644
--- a/src/com/android/settings/applications/AppOpsState.java
+++ b/src/com/android/settings/applications/AppOpsState.java
@@ -269,7 +269,7 @@
                 return mIcon;
             }
 
-            return mState.mContext.getResources().getDrawable(
+            return mState.mContext.getDrawable(
                     android.R.drawable.sym_def_app_icon);
         }
 
diff --git a/src/com/android/settings/applications/ApplicationsState.java b/src/com/android/settings/applications/ApplicationsState.java
index 1c2eb2c..9c51181 100644
--- a/src/com/android/settings/applications/ApplicationsState.java
+++ b/src/com/android/settings/applications/ApplicationsState.java
@@ -144,7 +144,7 @@
                     return true;
                 } else {
                     this.mounted = false;
-                    this.icon = context.getResources().getDrawable(
+                    this.icon = context.getDrawable(
                             com.android.internal.R.drawable.sym_app_on_sd_unavailable_icon);
                 }
             } else if (!this.mounted) {
diff --git a/src/com/android/settings/applications/RunningState.java b/src/com/android/settings/applications/RunningState.java
index 1019abc..1d24148 100644
--- a/src/com/android/settings/applications/RunningState.java
+++ b/src/com/android/settings/applications/RunningState.java
@@ -679,7 +679,7 @@
                     return constState.newDrawable();
                 }
             }
-            return context.getResources().getDrawable(
+            return context.getDrawable(
                     com.android.internal.R.drawable.ic_menu_cc);
         }
     }
diff --git a/src/com/android/settings/bluetooth/DeviceProfilesSettings.java b/src/com/android/settings/bluetooth/DeviceProfilesSettings.java
index 757535a..0109e35 100755
--- a/src/com/android/settings/bluetooth/DeviceProfilesSettings.java
+++ b/src/com/android/settings/bluetooth/DeviceProfilesSettings.java
@@ -194,7 +194,7 @@
 
         int iconResource = profile.getDrawableResource(mCachedDevice.getBtClass());
         if (iconResource != 0) {
-            pref.setIcon(getResources().getDrawable(iconResource));
+            pref.setIcon(getActivity().getDrawable(iconResource));
         }
 
         refreshProfilePreference(pref, profile);
diff --git a/src/com/android/settings/fuelgauge/BatteryEntry.java b/src/com/android/settings/fuelgauge/BatteryEntry.java
index 4ff4dfd..0dfd5c9 100644
--- a/src/com/android/settings/fuelgauge/BatteryEntry.java
+++ b/src/com/android/settings/fuelgauge/BatteryEntry.java
@@ -189,7 +189,7 @@
                 break;
         }
         if (iconId > 0) {
-            icon = context.getResources().getDrawable(iconId);
+            icon = context.getDrawable(iconId);
         }
         if ((name == null || iconId == 0) && this.sipper.uidObj != null) {
             getQuickNameIconForUid(this.sipper.uidObj);
@@ -228,7 +228,7 @@
                 name = context.getResources().getString(R.string.process_mediaserver_label);
             }
             iconId = R.drawable.ic_power_system;
-            icon = context.getResources().getDrawable(iconId);
+            icon = context.getDrawable(iconId);
             return;
         } else {
             //name = packages[0];
diff --git a/src/com/android/settings/fuelgauge/PowerUsageDetail.java b/src/com/android/settings/fuelgauge/PowerUsageDetail.java
index 9dca029..e3c8dab 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageDetail.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageDetail.java
@@ -379,7 +379,7 @@
                 // Use default icon
             }
         } else if (iconId != 0) {
-            mAppIcon = getActivity().getResources().getDrawable(iconId);
+            mAppIcon = getActivity().getDrawable(iconId);
         }
         if (mAppIcon == null) {
             mAppIcon = getActivity().getPackageManager().getDefaultActivityIcon();
diff --git a/src/com/android/settings/net/UidDetailProvider.java b/src/com/android/settings/net/UidDetailProvider.java
index 4b54137..b6160fd 100644
--- a/src/com/android/settings/net/UidDetailProvider.java
+++ b/src/com/android/settings/net/UidDetailProvider.java
@@ -138,7 +138,7 @@
             if (info != null) {
                 if (info.isManagedProfile()) {
                     detail.label = res.getString(R.string.managed_user_title);
-                    detail.icon = Resources.getSystem().getDrawable(
+                    detail.icon = mContext.getDrawable(
                             com.android.internal.R.drawable.ic_corp_icon);
                 } else {
                     detail.label = res.getString(R.string.running_process_item_user_label,
diff --git a/src/com/android/settings/notification/NotificationStation.java b/src/com/android/settings/notification/NotificationStation.java
index c61f91e..3f4d3df 100644
--- a/src/com/android/settings/notification/NotificationStation.java
+++ b/src/com/android/settings/notification/NotificationStation.java
@@ -275,7 +275,7 @@
         }
 
         try {
-            return r.getDrawable(resId);
+            return r.getDrawable(resId, null);
         } catch (RuntimeException e) {
             Log.w(TAG, "Icon not found in "
                     + (pkg != null ? resId : "<system>")
