Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelCol.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelCol.java	(revision 26829)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelCol.java	(revision 26830)
@@ -41,17 +41,40 @@
 				if (button.isSelected()) {
 					if (dlg.mark != null) {
-						dlg.mark.setColour(ent, col);
-						if (ent != Ent.LIGHT) {
+						if (ent == Ent.LIGHT) {
+							dlg.mark.setColour(ent, col);
+						} else {
 							if (button == offButton) {
-								stack.remove(stackCol.get(stackIdx));
-								stackCol.remove(stackIdx);
+								if (stackCol.size() != 0) {
+									dlg.mark.subColour(ent, stackIdx);
+									stackCol.get(stackIdx).removeActionListener(alStack);
+									stackColours.remove(stackCol.get(stackIdx));
+									stack.remove(stackCol.get(stackIdx));
+									stackCol.remove(stackIdx);
+									if ((stackCol.size() == stackIdx) && (stackIdx != 0))
+										stackIdx--;
+								}
 							} else if (button == addButton) {
-								stackCol.add(stackIdx, new JRadioButton());
+								if (stackCol.size() != 0) stackIdx++;
+								dlg.mark.addColour(ent, stackIdx, col);
+								stackCol.add(stackIdx, new JRadioButton(new ImageIcon(getClass().getResource("/images/ColourButton.png"))));
 								stackCol.get(stackIdx).setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
 								stack.add(stackCol.get(stackIdx));
+								stackColours.add(stackCol.get(stackIdx));
+								stackCol.get(stackIdx).addActionListener(alStack);
+							} else {
+								dlg.mark.setColour(ent, stackIdx, col);
 							}
-							for (int i = 0; stackCol.size() > i; i++) {
-								stackCol.get(i).setBounds(37, (89 + (i * (60 / stackCol.size()))), 30, (60 / stackCol.size()));
-								stackCol.get(i).setBackground(dlg.mark.ColMAP.get(dlg.mark.getColour(ent, i)));
+							if (stackCol.size() != 0) {
+								int height = 60 / stackCol.size();
+								for (int i = 0; stackCol.size() > i; i++) {
+									JRadioButton btnI = stackCol.get(i);
+									btnI.setBounds(2, (2 + (i * height)), 30, height);
+									btnI.setBackground(dlg.mark.ColMAP.get(dlg.mark.getColour(ent, i)));
+									if (stackIdx == i) {
+										btnI.setBorderPainted(true);
+									} else {
+										btnI.setBorderPainted(false);
+									}
+								}
 							}
 						}
@@ -74,6 +97,7 @@
 					stackIdx = i;
 					button.setBorderPainted(true);
-				} else
+				} else {
 					button.setBorderPainted(false);
+				}
 			}
 		}
@@ -95,14 +119,15 @@
 		this.add(getColButton(violetButton, 0, 128, 34, 16, Messages.getString("Violet"), Col.VIOLET), null);
 		if (ent != Ent.LIGHT) {
-			this.add(getColButton(addButton, 0, 144, 34, 16, Messages.getString("AddColour"), Col.UNKNOWN), null);
-			this.add(getColButton(blackButton, 35, 0, 34, 16, Messages.getString("Black"), Col.BLACK), null);
-			this.add(getColButton(greyButton, 35, 16, 34, 16, Messages.getString("Grey"), Col.GREY), null);
-			this.add(getColButton(brownButton, 35, 32, 34, 16, Messages.getString("Brown"), Col.BROWN), null);
-			this.add(getColButton(magentaButton, 35, 48, 34, 16, Messages.getString("Magenta"), Col.MAGENTA), null);
-			this.add(getColButton(pinkButton, 35, 64, 34, 16, Messages.getString("Pink"), Col.PINK), null);
+			this.add(getColButton(addButton, 0, 144, 34, 16, Messages.getString("AddColour"), Col.BLANK), null);
+			this.add(getColButton(blackButton, 37, 0, 34, 16, Messages.getString("Black"), Col.BLACK), null);
+			this.add(getColButton(greyButton, 37, 16, 34, 16, Messages.getString("Grey"), Col.GREY), null);
+			this.add(getColButton(brownButton, 37, 32, 34, 16, Messages.getString("Brown"), Col.BROWN), null);
+			this.add(getColButton(magentaButton, 37, 48, 34, 16, Messages.getString("Magenta"), Col.MAGENTA), null);
+			this.add(getColButton(pinkButton, 37, 64, 34, 16, Messages.getString("Pink"), Col.PINK), null);
 
 			stack = new JPanel();
 			stack.setBorder(BorderFactory.createLineBorder(Color.black));
-			stack.setBounds(37, 89, 30, 60);
+			stack.setBounds(38, 87, 34, 64);
+			stack.setLayout(null);
 			this.add(stack);
 			if (dlg.mark != null) {
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMore.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMore.java	(revision 26829)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMore.java	(revision 26830)
@@ -21,5 +21,5 @@
 		this.setLayout(null);
 		panelPat = new PanelPat(dlg);
-		panelPat.setBounds(new Rectangle(0, 0, 100, 160));
+		panelPat.setBounds(new Rectangle(0, 0, 110, 160));
 		this.add(panelPat, null);
 
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPat.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPat.java	(revision 26829)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPat.java	(revision 26830)
@@ -45,12 +45,12 @@
 		this.setLayout(null);
 		panelCol = new PanelCol(dlg, alType, Ent.BODY);
-		panelCol.setBounds(new Rectangle(0, 0, 68, 160));
+		panelCol.setBounds(new Rectangle(0, 0, 72, 160));
 		this.add(panelCol, null);
-		this.add(getPatButton(noneButton, 72, 0, 27, 27, "NoPat", Pat.NONE), null);
-		this.add(getPatButton(horizButton, 72, 26, 27, 27, "HorizPat", Pat.HORIZ), null);
-		this.add(getPatButton(vertButton, 72, 52, 27, 27, "VertPat", Pat.VERT), null);
-		this.add(getPatButton(diagButton, 72, 78, 27, 27, "DiagPat", Pat.DIAG), null);
-		this.add(getPatButton(squareButton, 72, 104, 27, 27, "SquarePat", Pat.SQUARE), null);
-		this.add(getPatButton(borderButton, 72, 130, 27, 27, "BorderPat", Pat.BORDER), null);
+		this.add(getPatButton(noneButton, 76, 0, 27, 27, "NoPat", Pat.NONE), null);
+		this.add(getPatButton(horizButton, 76, 26, 27, 27, "HorizPat", Pat.HORIZ), null);
+		this.add(getPatButton(vertButton, 76, 52, 27, 27, "VertPat", Pat.VERT), null);
+		this.add(getPatButton(diagButton, 76, 78, 27, 27, "DiagPat", Pat.DIAG), null);
+		this.add(getPatButton(squareButton, 76, 104, 27, 27, "SquarePat", Pat.SQUARE), null);
+		this.add(getPatButton(borderButton, 76, 130, 27, 27, "BorderPat", Pat.BORDER), null);
 		
 	}
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java	(revision 26829)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java	(revision 26830)
@@ -257,5 +257,5 @@
 
 	public enum Col {
-		UNKNOWN, WHITE, RED, ORANGE, AMBER, YELLOW, GREEN, BLUE, VIOLET, BLACK, GREY, BROWN, MAGENTA, PINK
+		UNKNOWN, BLANK, WHITE, RED, ORANGE, AMBER, YELLOW, GREEN, BLUE, VIOLET, BLACK, GREY, BROWN, MAGENTA, PINK
 	}
 
@@ -364,4 +364,24 @@
 		case LIGHT:
 			lightColour.set(i, col);
+			break;
+		}
+	}
+
+	public void addColour(Ent ent, int i, Col col) {
+		switch (ent) {
+		case BODY:
+		case BUOY:
+		case BEACON:
+		case FLOAT:
+			bodyColour.add(i, col);
+			break;
+		case TOPMARK:
+			topColour.add(i, col);
+			break;
+		case DAYMARK:
+			dayColour.add(i, col);
+			break;
+		case LIGHT:
+			lightColour.add(i, col);
 			break;
 		}
