diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index e7fe400..6e9a6c1 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -217,6 +217,9 @@
     <string name="status_bar_custom_header_title">Custom header image</string>
     <string name="status_bar_custom_header_summary">Enable notification panel header image</string>
     <string name="daylight_header_pack_title">Header image pack</string>
+    <string name="status_bar_custom_header_shadow_title">Header image shadow</string>
+    <string name="status_bar_custom_header_shadow_summary">For better visibility on bright images</string>
+    <string name="unit_percent">\u0025</string>
 
     <!-- Network traffic -->
     <string name="network_traffic_title">Network traffic</string>
diff --git a/res/xml/bars_settings.xml b/res/xml/bars_settings.xml
index 12c196e..80bd7b2 100644
--- a/res/xml/bars_settings.xml
+++ b/res/xml/bars_settings.xml
@@ -71,15 +71,29 @@
             android:title="@string/notification_title" >
 
             <CheckBoxPreference
-                    android:key="status_bar_custom_header"
-                    android:title="@string/status_bar_custom_header_title"
-                    android:summary="@string/status_bar_custom_header_summary"
-                    android:defaultValue="false"/>
+                android:key="status_bar_custom_header"
+                android:title="@string/status_bar_custom_header_title"
+                android:summary="@string/status_bar_custom_header_summary"
+                android:defaultValue="false"
+                android:persistent="false" />
 
             <ListPreference
                 android:key="daylight_header_pack"
                 android:title="@string/daylight_header_pack_title"
-                android:persistent="false" />
+                android:persistent="false"
+                android:dependency="status_bar_custom_header" />
+
+            <com.android.settings.preference.SeekBarPreference
+                android:key="status_bar_custom_header_shadow"
+                android:title="@string/status_bar_custom_header_shadow_title"
+                android:summary="@string/status_bar_custom_header_shadow_summary"
+                android:defaultValue="0"
+                android:max="100"
+                settings:min="0"
+                settings:unitsLeft=""
+                settings:unitsRight="@string/unit_percent"
+                android:persistent="false"
+                android:dependency="status_bar_custom_header" />
 
             <PreferenceScreen
                     android:title="@string/quick_settings_title"
diff --git a/src/org/omnirom/omnigears/ButtonBrightnessSettings.java b/src/org/omnirom/omnigears/ButtonBrightnessSettings.java
index a0e5d28..e5b56fd 100644
--- a/src/org/omnirom/omnigears/ButtonBrightnessSettings.java
+++ b/src/org/omnirom/omnigears/ButtonBrightnessSettings.java
@@ -82,7 +82,7 @@
         addPreferencesFromResource(R.xml.button_brightness_settings);
 
         PreferenceScreen prefSet = getPreferenceScreen();
-        ContentResolver resolver = getActivity().getContentResolver();
+        ContentResolver resolver = getContentResolver();
 
         mNoButtonBrightness = (CheckBoxPreference) findPreference(KEY_BUTTON_NO_BRIGHTNESS);
         mNoButtonBrightness.setChecked(Settings.System.getInt(resolver,
@@ -95,7 +95,7 @@
         mManualButtonBrightnessNew = (SeekBarPreference) findPreference(KEY_BUTTON_MANUAL_BRIGHTNESS_NEW);
         final int customButtonBrightness = getResources().getInteger(
                 com.android.internal.R.integer.config_button_brightness_default);
-        final int currentBrightness = Settings.System.getInt(getContext().getContentResolver(),
+        final int currentBrightness = Settings.System.getInt(resolver,
                 Settings.System.CUSTOM_BUTTON_BRIGHTNESS, customButtonBrightness);
         mManualButtonBrightnessNew.setValue(currentBrightness);
         mManualButtonBrightnessNew.setOnPreferenceChangeListener(this);
@@ -131,13 +131,13 @@
     public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
         if (preference == mNoButtonBrightness) {
             boolean checked = ((CheckBoxPreference)preference).isChecked();
-            Settings.System.putInt(getActivity().getContentResolver(),
+            Settings.System.putInt(getContentResolver(),
                     Settings.System.CUSTOM_BUTTON_DISABLE_BRIGHTNESS, checked ? 1:0);
             updateEnablement();
             return true;
         } else if (preference == mLinkButtonBrightness) {
             boolean checked = ((CheckBoxPreference)preference).isChecked();
-            Settings.System.putInt(getActivity().getContentResolver(),
+            Settings.System.putInt(getContentResolver(),
                     Settings.System.CUSTOM_BUTTON_USE_SCREEN_BRIGHTNESS, checked ? 1:0);
             updateEnablement();
             return true;
@@ -155,7 +155,7 @@
                     Settings.System.BUTTON_BACKLIGHT_TIMEOUT, buttonTimeout);
         } else if (preference == mManualButtonBrightnessNew) {
             int buttonBrightness = (Integer) objValue;
-            Settings.System.putInt(getContext().getContentResolver(),
+            Settings.System.putInt(getContentResolver(),
                     Settings.System.CUSTOM_BUTTON_BRIGHTNESS, buttonBrightness);
         } else {
             return false;
diff --git a/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java b/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java
index 7d66027..39710c3 100644
--- a/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java
+++ b/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java
@@ -38,6 +38,7 @@
 import android.provider.SearchIndexableResource;
 import android.provider.Settings;
 import android.provider.Settings.SettingNotFoundException;
+import android.util.Log;
 
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.R;
@@ -61,10 +62,12 @@
     private static final String DAYLIGHT_HEADER_PACK = "daylight_header_pack";
     private static final String DEFAULT_HEADER_PACKAGE = "com.android.systemui";
     private static final String NAVIGATIONBAR_ROOT = "category_navigationbar";
-    private static final String TABLET_NAVIGATION_BAR = "enable_tablet_navigationr";
+    private static final String TABLET_NAVIGATION_BAR = "enable_tablet_navigation";
+    private static final String CUSTOM_HEADER_IMAGE_SHADOW = "status_bar_custom_header_shadow";
 
     private ListPreference mDaylightHeaderPack;
     private CheckBoxPreference mCustomHeaderImage;
+    private SeekBarPreference mHeaderShadow;
 
     @Override
     protected int getMetricsCategory() {
@@ -119,7 +122,12 @@
         mDaylightHeaderPack.setValueIndex(valueIndex >= 0 ? valueIndex : 0);
         mDaylightHeaderPack.setSummary(mDaylightHeaderPack.getEntry());
         mDaylightHeaderPack.setOnPreferenceChangeListener(this);
-        mDaylightHeaderPack.setEnabled(customHeaderImage);
+
+        mHeaderShadow = (SeekBarPreference) findPreference(CUSTOM_HEADER_IMAGE_SHADOW);
+        final int headerShadow = Settings.System.getInt(getContentResolver(),
+                Settings.System.STATUS_BAR_CUSTOM_HEADER_SHADOW, 0);
+        mHeaderShadow.setValue((int)((headerShadow / 255) * 100));
+        mHeaderShadow.setOnPreferenceChangeListener(this);
     }
 
     @Override
@@ -128,7 +136,6 @@
             final boolean value = ((CheckBoxPreference)preference).isChecked();
             Settings.System.putInt(getContentResolver(),
                     Settings.System.STATUS_BAR_CUSTOM_HEADER, value ? 1 : 0);
-            mDaylightHeaderPack.setEnabled(value);
             return true;
         }
         // If we didn't handle it, let preferences handle it.
@@ -143,6 +150,11 @@
                     Settings.System.STATUS_BAR_DAYLIGHT_HEADER_PACK, value);
             int valueIndex = mDaylightHeaderPack.findIndexOfValue(value);
             mDaylightHeaderPack.setSummary(mDaylightHeaderPack.getEntries()[valueIndex]);
+         } else if (preference == mHeaderShadow) {
+            Integer headerShadow = (Integer) newValue;
+            int realHeaderValue = (int) (((double) headerShadow / 100) * 255);
+            Settings.System.putInt(getContentResolver(),
+                    Settings.System.STATUS_BAR_CUSTOM_HEADER_SHADOW, realHeaderValue);
         }
         return true;
     }
