diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index cc44802..a8fdd03 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -389,7 +389,8 @@
     <string name="notification_light_zen_mode">Lights in Do Not Disturb mode</string>
     <string name="notification_light_use_multiple_leds">Multiple LEDs</string>
     <string name="keywords_lights_brightness_level">dim leds brightness</string>
-    <string name="notification_light_automagic">Choose colors automatically</string>
+    <string name="notification_light_automagic">AutoColor</string>
+    <string name="notification_light_automagic_summary">Automatically set a proper color for the led notification if the app has no custom values</string>
     <!-- Lights settings, LED notification -->
     <string name="led_notification_title">Light settings</string>
     <string name="led_notification_text">LED light enabled by settings</string>
diff --git a/res/xml/notification_light_settings.xml b/res/xml/notification_light_settings.xml
index e93dc73..538a1ee 100644
--- a/res/xml/notification_light_settings.xml
+++ b/res/xml/notification_light_settings.xml
@@ -25,6 +25,13 @@
             android:key="notification_light_pulse"
             android:title="@string/notification_light_title" />
 
+        <org.omnirom.omnigears.preference.SystemSettingSwitchPreference
+            android:key="notification_light_color_auto"
+            android:title="@string/notification_light_automagic"
+            android:summary="@string/notification_light_automagic_summary"
+            android:dependency="notification_light_pulse"
+            android:defaultValue="true" />
+
         <org.omnirom.omnigears.batterylight.NotificationLightPreference
             android:key="default"
             android:title="@string/notification_light_default_value"
diff --git a/src/org/omnirom/omnigears/batterylight/NotificationLightSettings.java b/src/org/omnirom/omnigears/batterylight/NotificationLightSettings.java
index 708feb6..d0e0989 100644
--- a/src/org/omnirom/omnigears/batterylight/NotificationLightSettings.java
+++ b/src/org/omnirom/omnigears/batterylight/NotificationLightSettings.java
@@ -78,6 +78,7 @@
     private SystemSettingSwitchPreference mEnabledPref;
     private SystemSettingSwitchPreference mScreenOnLightsPref;
     private SystemSettingSwitchPreference mCustomEnabledPref;
+    private SystemSettingSwitchPreference mAutoGenerateColors;
     private NotificationLightPreference mDefaultPref;
     private Menu mMenu;
     private AppSelectListPreference mPackageAdapter;
@@ -120,6 +121,9 @@
                 findPreference(Settings.System.NOTIFICATION_LIGHT_SCREEN_ON);
         mScreenOnLightsPref.setOnPreferenceChangeListener(this);
 
+        mAutoGenerateColors = (SystemSettingSwitchPreference)
+                findPreference(Settings.System.NOTIFICATION_LIGHT_COLOR_AUTO);
+
         // Advanced light settings
         mCustomEnabledPref = (SystemSettingSwitchPreference)
                 findPreference(Settings.System.NOTIFICATION_LIGHT_PULSE_CUSTOM_ENABLE);
@@ -135,6 +139,14 @@
         mPackages = new HashMap<String, Package>();
         setHasOptionsMenu(true);
 
+        mMultiColorLed = resources.getBoolean(com.android.internal.R.bool.config_multiColorNotificationLed);
+        if (!mMultiColorLed) {
+            resetColors();
+            PreferenceGroup mGeneralPrefs = (PreferenceGroup) prefSet.findPreference("general_section");
+            mGeneralPrefs.removePreference(mAutoGenerateColors);
+        } else {
+            mAutoGenerateColors.setOnPreferenceChangeListener(this);
+        }
     }
 
     @Override
@@ -205,7 +217,8 @@
     }
 
     private int getInitialColorForPackage(String packageName) {
-        boolean autoColor = true;
+        boolean autoColor = Settings.System.getInt(getContentResolver(),
+                Settings.System.NOTIFICATION_LIGHT_COLOR_AUTO, mMultiColorLed ? 1 : 0) == 1;;
         int color = mDefaultColor;
         if (autoColor) {
             try {
@@ -341,7 +354,8 @@
     @Override
     public boolean onPreferenceChange(Preference preference, Object objValue) {
         if (preference == mEnabledPref || preference == mCustomEnabledPref ||
-            preference == mScreenOnLightsPref) {
+            preference == mScreenOnLightsPref ||
+            preference == mAutoGenerateColors) {
             getActivity().invalidateOptionsMenu();
         } else {
             NotificationLightPreference lightPref = (NotificationLightPreference) preference;
