diff --git a/eraser-base/src/main/jastadd/Item.jrag b/eraser-base/src/main/jastadd/Item.jrag
index 18e11cb4d2800f424acb71ff82f725c955844855..6ccdfb4997be0f0301f4ac1e8a9f07ce00671c12 100644
--- a/eraser-base/src/main/jastadd/Item.jrag
+++ b/eraser-base/src/main/jastadd/Item.jrag
@@ -137,9 +137,10 @@ aspect ItemHandling {
   //--- setStateFromBoolean ---
   public abstract void Item.setStateFromBoolean(boolean value);
   public void ColorItem.setStateFromBoolean(boolean value) {
-    if (getState().getBrightness()==0) {
-      setBrightness(value ? 100 : 0);
+    if (getState()!=null && getState().getBrightness()!=0 && value) {
+     return;
     }
+    setBrightness(value ? 100 : 0);
   }
   public void DateTimeItem.setStateFromBoolean(boolean value) {
     // there is no good way here
diff --git a/eraser-base/src/test/java/de/tudresden/inf/st/eraser/ControllingItemTest.java b/eraser-base/src/test/java/de/tudresden/inf/st/eraser/ControllingItemTest.java
index af5fe99fff7d996db081a53603c913eae81e0ea5..289ee0eccd58cd6ebc695842c49d4de4f8ee48a5 100644
--- a/eraser-base/src/test/java/de/tudresden/inf/st/eraser/ControllingItemTest.java
+++ b/eraser-base/src/test/java/de/tudresden/inf/st/eraser/ControllingItemTest.java
@@ -102,10 +102,10 @@ public class ControllingItemTest {
     assertEquals("30,20,10", stringItem.getState());
     assertEquals(TupleHSB.of(30, 20, 10), target.getState(), "Item was not controlled correctly");
 
-    // boolean true -> set brightness to full (100)
+    // boolean true -> brightness should still be 10 because it's already turned on
     booleanItem.setState(true);
     assertTrue(booleanItem.getState());
-    assertEquals(TupleHSB.of(30, 20, 100), target.getState(), "Item was not controlled correctly");
+    assertEquals(TupleHSB.of(30, 20, 10), target.getState(), "Item was not controlled correctly");
 
     // color (33,33,33) -> set brightness to (33,33,33)
     colorItem.setState(TupleHSB.of(33, 33, 33));