diff --git a/PlayWall/src/de/tobias/playpad/design/classic/ClassicGlobalDesign.java b/PlayWall/src/de/tobias/playpad/design/classic/ClassicGlobalDesign.java
index 76d1ecb40bad3460d5c297150fec084d65b621b3..b58784c1a3027a6a78a5310e77b45eecc9116675 100644
--- a/PlayWall/src/de/tobias/playpad/design/classic/ClassicGlobalDesign.java
+++ b/PlayWall/src/de/tobias/playpad/design/classic/ClassicGlobalDesign.java
@@ -328,7 +328,7 @@ public class ClassicGlobalDesign extends Design implements GlobalDesign {
 			PadSettings padSettings = pad.getPadSettings();
 
 			if (padSettings.isCustomLayout()) {
-				CartDesign layoutOpt = padSettings.getLayout();
+				CartDesign layoutOpt = padSettings.getDesign();
 				css += "\n" + layoutOpt.convertToCss(String.valueOf(pad.getIndex()), true);
 			}
 		}
diff --git a/PlayWall/src/de/tobias/playpad/design/modern/ModernGlobalDesign.java b/PlayWall/src/de/tobias/playpad/design/modern/ModernGlobalDesign.java
index 7d2b6c00208fd4b689e9d168a234d42c64cdf840..09d44c5fc3adfc69441307163648c8c9f9ac1157 100644
--- a/PlayWall/src/de/tobias/playpad/design/modern/ModernGlobalDesign.java
+++ b/PlayWall/src/de/tobias/playpad/design/modern/ModernGlobalDesign.java
@@ -14,7 +14,7 @@ import de.tobias.playpad.design.Design;
 import de.tobias.playpad.design.DesignColorAssociator;
 import de.tobias.playpad.design.FadeableColor;
 import de.tobias.playpad.design.GlobalDesign;
-import de.tobias.playpad.design.IColorPickerView;
+import de.tobias.playpad.design.ColorModeHandler;
 import de.tobias.playpad.pad.Pad;
 import de.tobias.playpad.pad.PadSettings;
 import de.tobias.playpad.pad.conntent.play.Durationable;
@@ -31,7 +31,7 @@ import javafx.scene.paint.Color;
 import javafx.stage.Stage;
 import javafx.util.Duration;
 
-public class ModernGlobalDesign extends Design implements GlobalDesign, DesignColorAssociator, IColorPickerView {
+public class ModernGlobalDesign extends Design implements GlobalDesign, DesignColorAssociator, ColorModeHandler {
 
 	public static final String TYPE = "modern";
 
@@ -318,10 +318,17 @@ public class ModernGlobalDesign extends Design implements GlobalDesign, DesignCo
 	public Color getAssociatedStandardColor() {
 		return Color.web(backgroundColor.getColorHi());
 	}
-	
+
 	// Color View
 	@Override
 	public Node getColorInterface(Consumer<DisplayableColor> onSelection) {
 		return new ColorPickerView(null, ModernColor.values(), onSelection);
 	}
+
+	@Override
+	public void setColor(CartDesign design, DisplayableColor color) {
+		if (design instanceof ModernCartDesign && color instanceof ModernColor) {
+			((ModernCartDesign) design).setBackgroundColor((ModernColor) color);
+		}
+	}
 }
diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopColorPickerView.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopColorPickerView.java
index aa00ed73fd8af4dbdc161e150e9bc814c4ee7911..dd307d3352b25459081ae04c002cba6ac90085c4 100644
--- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopColorPickerView.java
+++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopColorPickerView.java
@@ -3,33 +3,45 @@ package de.tobias.playpad.layout.desktop;
 import java.util.function.Consumer;
 
 import de.tobias.playpad.DisplayableColor;
-import de.tobias.playpad.design.IColorPickerView;
+import de.tobias.playpad.PlayPadMain;
+import de.tobias.playpad.design.CartDesign;
+import de.tobias.playpad.design.ColorModeHandler;
+import de.tobias.playpad.pad.Pad;
+import de.tobias.playpad.pad.PadSettings;
 import de.tobias.playpad.settings.Profile;
+import javafx.event.EventHandler;
 import javafx.scene.Node;
 import javafx.scene.Scene;
+import javafx.scene.input.MouseEvent;
+import javafx.scene.layout.StackPane;
 import javafx.scene.layout.VBox;
 import javafx.stage.Stage;
 
-public class DesktopColorPickerView implements Consumer<DisplayableColor> {
+public class DesktopColorPickerView implements Consumer<DisplayableColor>, EventHandler<MouseEvent> {
 
 	private Stage stage;
 
-	public DesktopColorPickerView(IColorPickerView baseView) {
-		Node node = baseView.getColorInterface(this);
+	private ColorModeHandler colorModeHandler;
+	private DisplayableColor selectedColor;
+
+	public DesktopColorPickerView(ColorModeHandler colorModeHandler) {
+		this.colorModeHandler = colorModeHandler;
+
+		Node node = colorModeHandler.getColorInterface(this);
 		VBox root = new VBox(node);
 
 		stage = new Stage();
 		stage.setScene(new Scene(root));
-		
+
 		// Init Stage
 		Profile.currentProfile().currentLayout().applyCss(stage);
 		stage.setResizable(false);
 	}
-	
+
 	public void show() {
 		stage.show();
 	}
-	
+
 	public void hide() {
 		stage.close();
 	}
@@ -37,6 +49,22 @@ public class DesktopColorPickerView implements Consumer<DisplayableColor> {
 	// Handle Selected Color from View.
 	@Override
 	public void accept(DisplayableColor t) {
-		
+		selectedColor = t;
+	}
+
+	@Override
+	public void handle(MouseEvent event) {
+		// TODO Rewrite this
+		if (event.getSource() instanceof StackPane) {
+			StackPane view = (StackPane) event.getSource();
+			if (view.getUserData() instanceof Pad) {
+				Pad pad = (Pad) view.getUserData();
+				PadSettings padSettings = pad.getPadSettings();
+				padSettings.setCustomLayout(true);
+				CartDesign design = padSettings.getDesign();
+				colorModeHandler.setColor(design, selectedColor);
+				PlayPadMain.getProgramInstance().getMainViewController().loadUserCss();
+			}
+		}
 	}
 }
diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopEditMode.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopEditMode.java
index ae58ecf802afaea4b891fcc52ac8efd7b0afafb9..6a88463ffa0a9746221da7b2164c25bbf217a55f 100644
--- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopEditMode.java
+++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopEditMode.java
@@ -1,7 +1,6 @@
 package de.tobias.playpad.layout.desktop;
 
 public enum DesktopEditMode {
-	PLAY,
-	DRAG,
-	COLOR;
+
+	PLAY, DRAG, COLOR;
 }
diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
index 1ada398838050487912afcb3785c8b25cb332746..6a0a26ed49f1985c563479b8e974c140ba484f91 100644
--- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
+++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
@@ -15,8 +15,8 @@ import de.tobias.playpad.AppUserInfoStrings;
 import de.tobias.playpad.PlayPadMain;
 import de.tobias.playpad.PlayPadPlugin;
 import de.tobias.playpad.Strings;
+import de.tobias.playpad.design.ColorModeHandler;
 import de.tobias.playpad.design.GlobalDesign;
-import de.tobias.playpad.design.IColorPickerView;
 import de.tobias.playpad.midi.Midi;
 import de.tobias.playpad.pad.Pad;
 import de.tobias.playpad.pad.PadStatus;
@@ -77,6 +77,7 @@ import javafx.scene.control.Slider;
 import javafx.scene.control.TextField;
 import javafx.scene.control.ToggleButton;
 import javafx.scene.input.KeyCombination;
+import javafx.scene.input.MouseEvent;
 import javafx.scene.layout.HBox;
 import javafx.stage.Modality;
 import javafx.stage.Stage;
@@ -200,8 +201,12 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 			colorButton.setSelected(true);
 
 			GlobalDesign design = Profile.currentProfile().currentLayout();
-			if (design instanceof IColorPickerView) {
-				colorPickerView = new DesktopColorPickerView((IColorPickerView) design);
+			if (design instanceof ColorModeHandler) {
+				colorPickerView = new DesktopColorPickerView((ColorModeHandler) design);
+				
+				// Add Listener for Pads
+				mainViewController.addListenerForPads(colorPickerView, MouseEvent.MOUSE_CLICKED);
+				
 				colorPickerView.show();
 			}
 		}
diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java b/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java
index 7902868b72f68b3bba1c49bb8f0761e204943e39..9f8703cfa1cf11e4506b454ff2e3b1059c35393e 100644
--- a/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java
+++ b/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java
@@ -126,6 +126,8 @@ public class DesktopPadView implements IPadView {
 
 	@Override
 	public void setContentView(Pad pad) {
+		superRoot.setUserData(pad);
+		
 		if (previewContent != null) {
 			previewContent.deinit();
 		}
diff --git a/PlayWall/src/de/tobias/playpad/pad/listener/PadPositionListener.java b/PlayWall/src/de/tobias/playpad/pad/listener/PadPositionListener.java
index f1ddd7d222840089fb73f7f63bbf8a69f6e783e2..e1438baff5ac2aba882efa7c3dce463862b593a6 100644
--- a/PlayWall/src/de/tobias/playpad/pad/listener/PadPositionListener.java
+++ b/PlayWall/src/de/tobias/playpad/pad/listener/PadPositionListener.java
@@ -91,7 +91,7 @@ public class PadPositionListener implements Runnable, IPadPositionListener {
 		Warning warning = padSettings.getWarning();
 
 		if (padSettings.isCustomLayout()) {
-			padSettings.getLayout().handleWarning(controller, warning, Profile.currentProfile().currentLayout());
+			padSettings.getDesign().handleWarning(controller, warning, Profile.currentProfile().currentLayout());
 		} else {
 			Profile.currentProfile().currentLayout().handleWarning(controller, warning);
 		}
@@ -115,7 +115,7 @@ public class PadPositionListener implements Runnable, IPadPositionListener {
 		PadSettings padSettings = pad.getPadSettings();
 
 		if (padSettings.isCustomLayout()) {
-			padSettings.getLayout().stopWarning(controller);
+			padSettings.getDesign().stopWarning(controller);
 		} else {
 			Profile.currentProfile().currentLayout().stopWarning(controller);
 		}
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java
index e7e59ff498246c2e1b99d7463a4711f3f2b708c3..605a0ab07af895cf9871c9b03b72d3ee37ef7eed 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java
@@ -45,6 +45,7 @@ import de.tobias.utils.util.OS.OSType;
 import de.tobias.utils.util.Worker;
 import javafx.application.Platform;
 import javafx.beans.property.DoubleProperty;
+import javafx.event.Event;
 import javafx.event.EventHandler;
 import javafx.event.EventType;
 import javafx.fxml.FXML;
@@ -643,6 +644,12 @@ public class MainViewController extends ViewController implements IMainViewContr
 	public void registerKeyboardListener(EventType<KeyEvent> eventType, EventHandler<KeyEvent> listener) {
 		getParent().getScene().addEventHandler(eventType, listener);
 	}
+	
+	public <T extends Event> void addListenerForPads(EventHandler<? super T> handler, EventType<T> eventType) {
+		for (IPadView view : padViews) {
+			view.getRootNode().addEventFilter(eventType, handler);
+		}
+	}
 
 	@Override
 	public void loadUserCss() {
diff --git a/PlayWallCore/src/de/tobias/playpad/action/feedback/ColorAdjuster.java b/PlayWallCore/src/de/tobias/playpad/action/feedback/ColorAdjuster.java
index 797118223479d36de28af0802e1c62a1716c61a9..44129b469e5e5bde06b1ff28a40b0ae3582c483d 100644
--- a/PlayWallCore/src/de/tobias/playpad/action/feedback/ColorAdjuster.java
+++ b/PlayWallCore/src/de/tobias/playpad/action/feedback/ColorAdjuster.java
@@ -59,7 +59,7 @@ public class ColorAdjuster {
 			Color layoutEvColor = null;
 
 			if (pad.getPadSettings().isCustomLayout()) {
-				CartDesign layout = pad.getPadSettings().getLayout();
+				CartDesign layout = pad.getPadSettings().getDesign();
 				if (layout instanceof DesignColorAssociator) {
 					DesignColorAssociator associator = (DesignColorAssociator) layout;
 					layoutStdColor = associator.getAssociatedStandardColor();
diff --git a/PlayWallCore/src/de/tobias/playpad/design/IColorPickerView.java b/PlayWallCore/src/de/tobias/playpad/design/ColorModeHandler.java
similarity index 76%
rename from PlayWallCore/src/de/tobias/playpad/design/IColorPickerView.java
rename to PlayWallCore/src/de/tobias/playpad/design/ColorModeHandler.java
index cfeeae7907ac6bfc5276de46ccc7051f5c2e4ce0..b8ddf1a2874624b57c2f166da5e7baaad0fdae97 100644
--- a/PlayWallCore/src/de/tobias/playpad/design/IColorPickerView.java
+++ b/PlayWallCore/src/de/tobias/playpad/design/ColorModeHandler.java
@@ -11,8 +11,9 @@ import javafx.scene.Node;
  * @author tobias
  *
  */
-public interface IColorPickerView {
+public interface ColorModeHandler {
 
 	public Node getColorInterface(Consumer<DisplayableColor> onSelection);
 
+	public void setColor(CartDesign design, DisplayableColor color);
 }
diff --git a/PlayWallCore/src/de/tobias/playpad/pad/PadSettings.java b/PlayWallCore/src/de/tobias/playpad/pad/PadSettings.java
index 7c46e1ac6437b3ce2eacdf37ca5da79b62969767..f0fd7b3d1d40c0d058b962947798fff75ba29750 100644
--- a/PlayWallCore/src/de/tobias/playpad/pad/PadSettings.java
+++ b/PlayWallCore/src/de/tobias/playpad/pad/PadSettings.java
@@ -152,7 +152,7 @@ public class PadSettings {
 		return customLayoutProperty;
 	}
 
-	public CartDesign getLayout() {
+	public CartDesign getDesign() {
 		return getLayout(Profile.currentProfile().getProfileSettings().getLayoutType());
 	}
 
diff --git a/PlayWallCore/src/de/tobias/playpad/viewcontroller/main/IMainViewController.java b/PlayWallCore/src/de/tobias/playpad/viewcontroller/main/IMainViewController.java
index 29941d200665aeea35c4eee8d0b4ad4b13c4dda4..680582f37baa8a370c40d3b5a0815fc2eadc7d14 100644
--- a/PlayWallCore/src/de/tobias/playpad/viewcontroller/main/IMainViewController.java
+++ b/PlayWallCore/src/de/tobias/playpad/viewcontroller/main/IMainViewController.java
@@ -9,6 +9,7 @@ import de.tobias.playpad.view.main.MainLayoutConnect;
 import de.tobias.playpad.view.main.MainLayoutHandler;
 import de.tobias.utils.ui.NotificationHandler;
 import de.tobias.utils.ui.scene.NotificationPane;
+import javafx.event.Event;
 import javafx.event.EventHandler;
 import javafx.event.EventType;
 import javafx.scene.Parent;
@@ -149,4 +150,6 @@ public interface IMainViewController extends NotificationHandler {
 	 * @return NotificationPane
 	 */
 	public NotificationPane getNotificationPane();
+
+	public <T extends Event> void addListenerForPads(EventHandler<? super T> handler, EventType<T> eventType);
 }