diff --git a/plugin.py b/plugin.py
index 9ac8667..07884f2 100644
--- a/plugin.py
+++ b/plugin.py
@@ -293,22 +293,27 @@ class scheduler_select(gtk.DrawingArea):
         self.start_point = self.get_point(event)
         self.button_state_temp = copy.deepcopy(self.button_state)
 
+        self.new_state = self.button_state[self.start_point[0]][self.start_point[1]]
+
+        if event.button == 1:
+            self.new_state += 1
+            if self.new_state > 2:
+                self.new_state = 0
+
+        elif event.button == 3:
+            self.new_state -= 1
+            if self.new_state < 0:
+                self.new_state = 2
+
+        self.button_state[self.start_point[0]][self.start_point[1]] = self.new_state
+
+        self.queue_draw()
+
     #if the same box -> change it
     def mouse_up(self, widget, event):
         self.mouse_press = False
-        end_point = self.get_point(event)
-
-        #change color on mouseclick depending on the button
-        if end_point[0] is self.start_point[0] and end_point[1] is self.start_point[1]:
-            if event.button == 1:
-                self.button_state[end_point[0]][end_point[1]] += 1
-                if self.button_state[end_point[0]][end_point[1]] > 2:
-                    self.button_state[end_point[0]][end_point[1]] = 0
-            elif event.button == 3:
-                self.button_state[end_point[0]][end_point[1]] -= 1
-                if self.button_state[end_point[0]][end_point[1]] < 0:
-                    self.button_state[end_point[0]][end_point[1]] = 2
-            self.queue_draw()
+
+        self.queue_draw()
         
     #if box changed and mouse is pressed draw all boxes from start point to end point
     #set hover text etc..
@@ -325,7 +330,7 @@ class scheduler_select(gtk.DrawingArea):
 
                 for x in xrange(min(points[0]), max(points[0])+1):
                     for y in xrange(min(points[1]), max(points[1])+1):
-                        self.button_state[x][y] = self.button_state[self.start_point[0]][self.start_point[1]]
+                        self.button_state[x][y] = self.new_state
 
                 self.queue_draw()
 
