Index: applications/editors/josm/plugins/smed2/src/panels/PanelMain.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/panels/PanelMain.java	(revision 30021)
+++ applications/editors/josm/plugins/smed2/src/panels/PanelMain.java	(revision 30022)
@@ -5,8 +5,13 @@
 import java.awt.Color;
 import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
 import java.awt.event.ActionListener;
+import java.awt.image.BufferedImage;
+import java.io.File;
 import java.util.ArrayList;
 import java.util.Iterator;
 
+import javax.imageio.ImageIO;
 import javax.swing.*;
 
@@ -14,16 +19,19 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.actions.search.SearchCompiler.Parent;
 
 import s57.S57att.Att;
 import s57.S57obj.Obj;
+import seamap.Renderer;
 import seamap.SeaMap.*;
 import smed2.Smed2Action;
 
 public class PanelMain extends JPanel {
-
-	/**
-	 * 
-	 */
 	private static final long serialVersionUID = 1L;
+	
+	Smed2Action dlg;
+	BufferedImage img;
+	int w, h, z, f;
+	JTextField wt, ht, zt, ft;
 	public static JTextArea decode = null;
 	public static JTextField messageBar = null;
@@ -31,4 +39,5 @@
 	private ActionListener alSave = new ActionListener() {
 		public void actionPerformed(java.awt.event.ActionEvent e) {
+			dumpMap();
 		}
 	};
@@ -65,9 +74,23 @@
 	};
 
-	public PanelMain() {
-
+	public PanelMain(Smed2Action dia) {
+		dlg = dia;
 		setLayout(null);
 		setSize(new Dimension(480, 480));
 		
+		w = h = z = f = 0;
+		wt = new JTextField("0");
+		wt.setBounds(10, 400, 40, 20);
+    add(wt);
+		ht = new JTextField("0");
+		ht.setBounds(60, 400, 40, 20);
+    add(ht);
+		zt = new JTextField("0");
+		zt.setBounds(110, 400, 40, 20);
+    add(zt);
+		ft = new JTextField("0");
+		ft.setBounds(160, 400, 40, 20);
+    add(ft);
+
     messageBar = new JTextField();
     messageBar.setBounds(70, 430, 290, 20);
@@ -92,5 +115,25 @@
 		decode.setBounds(0, 0, 480, 420);
 		decode.setTabSize(1);
-		add(decode);
+//		add(decode);
+	}
+	
+	public void dumpMap() {
+		img = new BufferedImage(Integer.parseInt(wt.getText()), Integer.parseInt(ht.getText()), BufferedImage.TYPE_INT_ARGB);
+		Graphics2D g2 = img.createGraphics();
+		Renderer.reRender(g2, Integer.parseInt(zt.getText()), Integer.parseInt(ft.getText()), dlg.map, dlg.rendering);
+		try {
+			ImageIO.write(img, "png", new File("/Users/mherring/Desktop/export.png"));
+		} catch (Exception x) {
+			System.out.println("Exception");
+		}
+		repaint();
+	}
+	
+	public void paintComponent(Graphics g){
+		super.paintComponent(g);
+		Graphics2D g2 = (Graphics2D) g;
+		g2.setBackground(new Color(0xb5d0d0));
+		if (img != null) g2.clearRect(0, 0, img.getWidth(), img.getHeight());
+		g2.drawImage(img, 0, 0, null);;
 	}
 	
Index: applications/editors/josm/plugins/smed2/src/seamap/Renderer.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/seamap/Renderer.java	(revision 30021)
+++ applications/editors/josm/plugins/smed2/src/seamap/Renderer.java	(revision 30022)
@@ -143,5 +143,5 @@
 	}
 	
-	public static void lineSymbols(Feature feature, Symbol prisymb, double space, Symbol secsymb, int ratio) {
+	public static void lineSymbols(Feature feature, Symbol prisymb, double space, Symbol secsymb, int ratio, Color col) {
 		Area area;
 		switch (feature.flag) {
@@ -207,5 +207,7 @@
 							}
 							if (!gap) {
-								Symbols.drawSymbol(g2, symbol, sScale, curr.getX(), curr.getY(), new Delta(Handle.BC, AffineTransform.getRotateInstance(Math.atan2((succ.getY() - curr.getY()), (succ.getX() - curr.getX())) + Math.toRadians(90))), null);
+								Symbols.drawSymbol(g2, symbol, sScale, curr.getX(), curr.getY(),
+										new Delta(Handle.BC, AffineTransform.getRotateInstance(Math.atan2((succ.getY() - curr.getY()), (succ.getX() - curr.getX())) + Math.toRadians(90))),
+										new Scheme(col));
 							}
 							if (space > 0)
Index: applications/editors/josm/plugins/smed2/src/seamap/Rules.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/seamap/Rules.java	(revision 30021)
+++ applications/editors/josm/plugins/smed2/src/seamap/Rules.java	(revision 30022)
@@ -140,5 +140,5 @@
 		case RESARE:
 			if (zoom >= 12) {
-				Renderer.lineSymbols(feature, Areas.Restricted, 1.0, null, 0);
+				Renderer.lineSymbols(feature, Areas.Restricted, 1.0, null, 0, new Color(0x80c480));
 //				if ((CatREA)Renderer.getAttVal(feature, feature.type, 0, Att.CATREA) == CatREA.REA_NWAK)
 //					Renderer.symbol(feature, Areas.NoWake, Obj.RESARE, null);
@@ -199,5 +199,5 @@
 			if (zoom >= 12) {
 				Renderer.symbol(feature, Areas.Plane, Obj.SPLARE, null, null);
-				Renderer.lineSymbols(feature, Areas.Restricted, 0.5, Areas.LinePlane, 10);
+				Renderer.lineSymbols(feature, Areas.Restricted, 0.5, Areas.LinePlane, 10, new Color(0x80c480));
 			}
 			if ((zoom >= 15) && (name != null))
@@ -268,5 +268,5 @@
 		if (zoom >= 14) {
 			if (feature.type == Obj.CBLSUB) {
-				Renderer.lineSymbols(feature, Areas.Cable, 0.0, null, 0);
+				Renderer.lineSymbols(feature, Areas.Cable, 0.0, null, 0, new Color(0x80c480));
 			} else if (feature.type == Obj.CBLOHD) {
 
@@ -311,9 +311,12 @@
 		case ACHARE:
 			if (zoom >= 12) {
-				if (feature.flag != Fflag.LINE)
-					Renderer.symbol(feature, Harbours.Anchorage, null, null, null);
-				Renderer.lineSymbols(feature, Areas.Restricted, 1.0, Areas.LineAnchor, 10);
+				if (feature.flag != Fflag.AREA) {
+					Renderer.symbol(feature, Harbours.Anchorage, null, null, new Scheme(Color.black));
+				} else {
+					Renderer.symbol(feature, Harbours.Anchorage, null, null, new Scheme(new Color(0xc480ff)));
+					Renderer.lineSymbols(feature, Areas.Restricted, 1.0, Areas.LineAnchor, 10, new Color(0xc480ff));
+				}
 				if ((zoom >= 15) && ((name) != null)) {
-					Renderer.labelText(feature, (String) name.val, new Font("Arial", Font.BOLD, 80), new Color(0x80c480ff), null);
+					Renderer.labelText(feature, (String) name.val, new Font("Arial", Font.BOLD, 80), new Color(0xc480ff), new Delta(Handle.BC, AffineTransform.getTranslateInstance(160, 0)));
 				}
 			}
@@ -705,5 +708,5 @@
 		if (zoom >= 14) {
 			if (feature.type == Obj.PIPSOL) {
-				Renderer.lineSymbols(feature, Areas.Pipeline, 1.0, null, 0);
+				Renderer.lineSymbols(feature, Areas.Pipeline, 1.0, null, 0, new Color(0x80c480));
 			} else if (feature.type == Obj.PIPOHD) {
 
@@ -748,22 +751,22 @@
 		case TSSRON:
 			if (zoom <= 15)
-				Renderer.lineVector(feature, new LineStyle(null, 0, null, new Color(0x80c480ff, true)));
+				Renderer.lineVector(feature, new LineStyle(null, 0, null, new Color(0x80c48080, true)));
 			else
-				Renderer.lineVector(feature, new LineStyle(new Color(0x80c480ff, true), 20, null, null));
+				Renderer.lineVector(feature, new LineStyle(new Color(0x80c48080, true), 20, null, null));
 			AttItem name = feature.atts.get(Att.OBJNAM);
 			if ((zoom >= 10) && (name != null))
-				Renderer.labelText(feature, (String) name.val, new Font("Arial", Font.BOLD, 150), new Color(0x80c480ff), null);
+				Renderer.labelText(feature, (String) name.val, new Font("Arial", Font.BOLD, 150), new Color(0x80c48080), null);
 			break;
 		case TSELNE:
-			Renderer.lineVector(feature, new LineStyle(new Color(0x80c480ff, true), 20, null, null));
+			Renderer.lineVector(feature, new LineStyle(new Color(0x80c48080, true), 20, null, null));
 			break;
 		case TSSLPT:
-			Renderer.lineSymbols(feature, Areas.LaneArrow, 0.5, null, 0);
+			Renderer.lineSymbols(feature, Areas.LaneArrow, 0.5, null, 0, new Color(0x80c48080, true));
 			break;
 		case TSSBND:
-			Renderer.lineVector(feature, new LineStyle(new Color(0x80c480ff, true), 20, new float[] { 40, 40 }, null));
+			Renderer.lineVector(feature, new LineStyle(new Color(0x80c48080, true), 20, new float[] { 40, 40 }, null));
 			break;
 		case ISTZNE:
-			Renderer.lineSymbols(feature, Areas.Restricted, 1.0, null, 0);
+			Renderer.lineSymbols(feature, Areas.Restricted, 1.0, null, 0, new Color(0x80c48080, true));
 			break;
 		}
Index: applications/editors/josm/plugins/smed2/src/smed2/Smed2Action.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/smed2/Smed2Action.java	(revision 30021)
+++ applications/editors/josm/plugins/smed2/src/smed2/Smed2Action.java	(revision 30022)
@@ -12,7 +12,10 @@
 import java.awt.*;
 import java.awt.event.*;
+import java.awt.image.BufferedImage;
+import java.io.File;
 import java.util.*;
 import java.util.Map.Entry;
 
+import javax.imageio.ImageIO;
 import javax.swing.*;
 
@@ -30,4 +33,5 @@
 
 import s57.S57dat;
+import seamap.Renderer;
 import seamap.SeaMap;
 import seamap.SeaMap.*;
@@ -37,6 +41,6 @@
 
 public class Smed2Action extends JosmAction implements EditLayerChangeListener, SelectionChangedListener {
-
 	private static final long serialVersionUID = 1L;
+	
 	private static String editor = tr("SeaMap Editor");
 	public static JFrame editFrame = null;
@@ -122,5 +126,5 @@
 		editFrame.setAlwaysOnTop(true);
 		editFrame.setVisible(true);
-		panelMain = new PanelMain();
+		panelMain = new PanelMain(this);
 		editFrame.add(panelMain);
 		panelS57 = new S57dat();
Index: applications/editors/josm/plugins/smed2/src/symbols/Areas.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/symbols/Areas.java	(revision 30021)
+++ applications/editors/josm/plugins/smed2/src/symbols/Areas.java	(revision 30022)
@@ -20,4 +20,5 @@
 	static {
 		Plane.add(new Instr(Prim.BBOX, new Rectangle(-60,-60,120,120)));
+		Plane.add(new Instr(Prim.FILL, new Color(0xa30075)));
 		Path2D.Double p = new Path2D.Double(); p.moveTo(40,20); p.lineTo(50,10); p.lineTo(27.0,13.3); p.lineTo(23.7,6.8); p.lineTo(40.0,5.0); p.curveTo(55,4,55,-9,40,-10);
 		p.quadTo(31,-11,30,-15); p.lineTo(-30,2); p.quadTo(-35,-12,-45,-15); p.quadTo(-56,-3,-50,15); p.lineTo(18.4,7.3); p.lineTo(21.7,14); p.lineTo(-20,20); p.closePath();
@@ -44,5 +45,4 @@
 	static {
 		LineAnchor.add(new Instr(Prim.BBOX, new Rectangle(-30,-60,60,90)));
-		LineAnchor.add(new Instr(Prim.FILL, new Color(0xc480ff)));
 		LineAnchor.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Harbours.Anchor, 0.5, 0, 0, new Delta(Handle.CC, AffineTransform.getRotateInstance(Math.toRadians(-90.0))), null)));
 	}
@@ -55,5 +55,4 @@
 	static {
 		MarineFarm.add(new Instr(Prim.STRK, new BasicStroke(3, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
-		MarineFarm.add(new Instr(Prim.FILL, Color.black));
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-23,12); p.lineTo(-23,23); p.lineTo(23,23); p.lineTo(23,12); p.moveTo(-8,15); p.lineTo(-8,23); p.moveTo(8,15); p.lineTo(8,23);
 		p.moveTo(-23,-12); p.lineTo(-23,-23); p.lineTo(23,-23); p.lineTo(23,-12); p.moveTo(-8,-15); p.lineTo(-8,-23); p.moveTo(8,-15); p.lineTo(8,-23);
@@ -84,5 +83,4 @@
 		Restricted.add(new Instr(Prim.BBOX, new Rectangle(-15,-30,30,30)));
 		Restricted.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
-		Restricted.add(new Instr(Prim.FILL, new Color(0xc480ff)));
 		Restricted.add(new Instr(Prim.LINE, new Line2D.Double(0,0,0,-30)));
 		Restricted.add(new Instr(Prim.LINE, new Line2D.Double(0,-15,17,-15)));
@@ -136,5 +134,4 @@
 	static {
 		WindFarm.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		WindFarm.add(new Instr(Prim.FILL, Color.black));
 		WindFarm.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-100,-100,200,200)));
 		WindFarm.add(new Instr(Prim.LINE, new Line2D.Double(-35,50,35,50)));
@@ -160,5 +157,4 @@
 	static {
 		WreckND.add(new Instr(Prim.STRK, new BasicStroke(5, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		WreckND.add(new Instr(Prim.FILL, Color.black));
 		WreckND.add(new Instr(Prim.LINE, new Line2D.Double(-40,0,40,0)));
 		WreckND.add(new Instr(Prim.LINE, new Line2D.Double(0,-30,0,30)));
@@ -169,5 +165,4 @@
 	static {
 		WreckS.add(new Instr(Prim.STRK, new BasicStroke(3, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		WreckS.add(new Instr(Prim.FILL, Color.black));
 		WreckS.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-6,-6,12,12)));
 		WreckS.add(new Instr(Prim.LINE, new Line2D.Double(-40,0,-6,0)));
Index: applications/editors/josm/plugins/smed2/src/symbols/Harbours.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/symbols/Harbours.java	(revision 30021)
+++ applications/editors/josm/plugins/smed2/src/symbols/Harbours.java	(revision 30022)
@@ -31,5 +31,4 @@
 	public static final Symbol Anchorage = new Symbol();
 	static {
-		Anchorage.add(new Instr(Prim.FILL, new Color(0xa30075)));
 		Anchorage.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Harbours.Anchor, 1.0, 0, 0, null, null)));
 	}
@@ -67,12 +66,18 @@
 	static {
 		ContainerCrane.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		ContainerCrane.add(new Instr(Prim.FILL, Color.black));
 		ContainerCrane.add(new Instr(Prim.RSHP, new Rectangle2D.Double(-15,-65,30,100)));
 		ContainerCrane.add(new Instr(Prim.RECT, new Rectangle2D.Double(-40,-12.5,80,25)));
 	}
+	public static final Symbol Customs = new Symbol();
+	static {
+		Customs.add(new Instr(Prim.BBOX, new Rectangle(-30,-30,60,60)));
+		Customs.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
+		Customs.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-28,-28,56,56)));
+		Customs.add(new Instr(Prim.LINE, new Line2D.Double(-25,5,25,5)));
+		Customs.add(new Instr(Prim.LINE, new Line2D.Double(-25,-5,25,-5)));
+	}
 	public static final Symbol DeviationDolphin = new Symbol();
 	static {
 		DeviationDolphin.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		DeviationDolphin.add(new Instr(Prim.FILL, Color.black));
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-30.0,0.0); p.lineTo(30.0,0.0); p.moveTo(0.0,0.0); p.lineTo(0.0,-40.0);
 		p.moveTo(-20.0,0.0); p.lineTo(-15.0,-32.0); p.lineTo(15.0,-32.0); p.lineTo(20.0,0.0);
@@ -82,5 +87,4 @@
 	static {
 		DistanceI.add(new Instr(Prim.STRK, new BasicStroke(3, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		DistanceI.add(new Instr(Prim.FILL, Color.black));
 		DistanceI.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-11,-11,22,22)));
 	}
@@ -101,4 +105,15 @@
 		Dolphin.add(new Instr(Prim.PLIN, p));
 	}
+	public static final Symbol Explosives = new Symbol();
+	static {
+		Explosives.add(new Instr(Prim.BBOX, new Rectangle(-30,-30,60,60)));
+		Explosives.add(new Instr(Prim.FILL, new Color(0xa30075)));
+		Explosives.add(new Instr(Prim.RSHP, new Ellipse2D.Double(-5,25,10,10)));
+		Explosives.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+		Path2D.Double p = new Path2D.Double(); p.moveTo(-10,20); p.lineTo(-13,17); p.lineTo(-13,8);
+		p.moveTo(0,10); p.lineTo(0,0); p.lineTo(-8,-10);
+		p.moveTo(10,17); p.lineTo(18,-10); p.lineTo(10,-20);
+		Explosives.add(new Instr(Prim.PLIN, p));
+	}
 	public static final Symbol Harbour = new Symbol();
 	static {
@@ -111,7 +126,15 @@
 	static {
 		HarbourMaster.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		HarbourMaster.add(new Instr(Prim.FILL, Color.black));
 		HarbourMaster.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-35,-50,70,100)));
 		HarbourMaster.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Harbours.Anchor, 0.6, 0, 0, null, null)));
+	}
+	public static final Symbol Hospital = new Symbol();
+	static {
+		Hospital.add(new Instr(Prim.BBOX, new Rectangle(-30,-30,60,60)));
+		Hospital.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
+		Hospital.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-28,-28,56,56)));
+		Path2D.Double p = new Path2D.Double(); p.moveTo(-26,-5); p.lineTo(-5,-5); p.lineTo(-5,-25); p.moveTo(5,-25); p.lineTo(5,-5); p.lineTo(25,-5);
+		p.moveTo(-25,5); p.lineTo(-5,5); p.lineTo(-5,25); p.moveTo(5,25); p.lineTo(5,5); p.lineTo(25,5);
+		Hospital.add(new Instr(Prim.PLIN, p));
 	}
 	public static final Symbol LandingSteps = new Symbol();
@@ -148,5 +171,4 @@
 	static {
 		PortCrane.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		PortCrane.add(new Instr(Prim.FILL, Color.black));
 		PortCrane.add(new Instr(Prim.EARC, new Arc2D.Double(-36.0,-36.0,72.0,72.0,70.0,-320.0,Arc2D.OPEN)));
 		PortCrane.add(new Instr(Prim.LINE, new Line2D.Double(0,0,0,-60)));
@@ -154,5 +176,4 @@
 	public static final Symbol Post = new Symbol();
 	static {
-		Post.add(new Instr(Prim.FILL, Color.black));
 		Post.add(new Instr(Prim.RSHP, new Ellipse2D.Double(-10,-10,20,20)));
 	}
@@ -160,5 +181,4 @@
 	static{
 		Rescue.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		Rescue.add(new Instr(Prim.FILL, Color.black));
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-11,0); p.lineTo(0,-43); p.lineTo(11,0); p.lineTo(0,43); p.closePath();
 		Rescue.add(new Instr(Prim.PGON, p));
@@ -168,5 +188,4 @@
 	static {
 		SignalStation.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		SignalStation.add(new Instr(Prim.FILL, Color.black));
 		SignalStation.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-25,-25,50,50)));
 		SignalStation.add(new Instr(Prim.RSHP, new Ellipse2D.Double(-4,-4,8,8)));
@@ -175,5 +194,4 @@
 	static {
 		TideGauge.add(new Instr(Prim.STRK, new BasicStroke(3, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		TideGauge.add(new Instr(Prim.FILL, Color.black));
 		TideGauge.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-10,-10,20,20)));
 		TideGauge.add(new Instr(Prim.LINE, new Line2D.Double(-10,0,-30,0)));
Index: applications/editors/josm/plugins/smed2/src/symbols/Landmarks.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/symbols/Landmarks.java	(revision 30021)
+++ applications/editors/josm/plugins/smed2/src/symbols/Landmarks.java	(revision 30022)
@@ -27,5 +27,4 @@
 	static {
 		Base.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		Base.add(new Instr(Prim.FILL, Color.black));
 		Base.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-10,-10,20,20)));
 		Base.add(new Instr(Prim.LINE, new Line2D.Double(-35,0,-10,0)));
@@ -37,5 +36,4 @@
 		Chimney.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
 		Chimney.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		Chimney.add(new Instr(Prim.FILL, Color.black));
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-25.0,0.0); p.lineTo(-10.0,-120.0); p.lineTo(10.0,-120.0); p.lineTo(25.0,0.0);
 		p.moveTo(-10.0,-128.0); p.curveTo(-13.0,-147.0,15.0,-159.0,20.0,-148.0);
@@ -46,5 +44,4 @@
 	public static final Symbol Church = new Symbol();
 	static {
-		Church.add(new Instr(Prim.FILL, Color.black));
 		Path2D.Double p = new Path2D.Double(); p.moveTo(10.0,-10.0); p.lineTo(37.0,-10.0); p.quadTo(48.0,-10.0,48.0,-21.0); p.lineTo(50.0,-21.0); p.lineTo(50.0,21.0);
 		p.lineTo(48.0,21.0); p.quadTo(48.0,10.0,37.0,10.0); p.lineTo(10.0,10.0); p.lineTo(10.0,37.0); p.quadTo(10.0,48.0,21.0,48.0); p.lineTo(21.0,50.0);
@@ -57,5 +54,4 @@
 	static {
 		ChurchTower.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		ChurchTower.add(new Instr(Prim.FILL, Color.black));
 		ChurchTower.add(new Instr(Prim.RECT, new Rectangle2D.Double(-36,-36,72,72)));
 		ChurchTower.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-2,-2,4,4)));
@@ -65,5 +61,4 @@
 		Cross.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
 		Cross.add(new Instr(Prim.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		Cross.add(new Instr(Prim.FILL, Color.black));
 		Cross.add(new Instr(Prim.LINE, new Line2D.Double(0,-10,0,-150)));
 		Cross.add(new Instr(Prim.LINE, new Line2D.Double(-30,-115,30,-115)));
@@ -73,5 +68,4 @@
 		DishAerial.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
 		DishAerial.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL)));
-		DishAerial.add(new Instr(Prim.FILL, Color.black));
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-7.8,-6.0); p.lineTo(0.0,-62.0); p.lineTo(7.8,-6.0); p.moveTo(18.0,-109.0); p.lineTo(25.0,-113.0);
 		p.moveTo(-9.5,-157.0); p.curveTo(-60.7,-125.5,-16.5,-33.9,44.9,-61.7); p.closePath();
@@ -81,5 +75,4 @@
 	static {
 		Dome.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		Dome.add(new Instr(Prim.FILL, Color.black));
 		Dome.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-36,-36,72,72)));
 		Dome.add(new Instr(Prim.RSHP, new Ellipse2D.Double(-4,-4,8,8)));
@@ -89,5 +82,4 @@
 		Flagstaff.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
 		Flagstaff.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		Flagstaff.add(new Instr(Prim.FILL, Color.black));
 		Path2D.Double p = new Path2D.Double(); p.moveTo(0.0,-10.0); p.lineTo(0.0,-150.0); p.moveTo(0.0,-140.0); p.lineTo(40.0,-140.0); p.lineTo(40.0,-100.0); p.lineTo(0.0,-100.0);
 		Flagstaff.add(new Instr(Prim.PLIN, p));
@@ -97,5 +89,4 @@
 		FlareStack.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
 		FlareStack.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		FlareStack.add(new Instr(Prim.FILL, Color.black));
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-7.8,-6.0); p.lineTo(-7.8,-100.0); p.lineTo(7.8,-100.0); p.lineTo(7.8,-6.0);
 		FlareStack.add(new Instr(Prim.PLIN, p));
@@ -108,5 +99,4 @@
 		LandTower.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
 		LandTower.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		LandTower.add(new Instr(Prim.FILL, Color.black));
 		LandTower.add(new Instr(Prim.LINE, new Line2D.Double(-25,0,-15,-120)));
 		LandTower.add(new Instr(Prim.LINE, new Line2D.Double(25,0,15,-120)));
@@ -117,5 +107,4 @@
 		Mast.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
 		Mast.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL)));
-		Mast.add(new Instr(Prim.FILL, Color.black));
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-25.0,0.0); p.lineTo(0.0,-150.0); p.lineTo(25.0,0.0);
 		Mast.add(new Instr(Prim.PLIN, p));
@@ -125,5 +114,4 @@
 		Monument.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
 		Monument.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
-		Monument.add(new Instr(Prim.FILL, Color.black));
 		Monument.add(new Instr(Prim.LINE, new Line2D.Double(-25,0,-15,-105)));
 		Monument.add(new Instr(Prim.LINE, new Line2D.Double(25,0,15,-105)));
@@ -133,5 +121,4 @@
 	static {
 		Platform.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		Platform.add(new Instr(Prim.FILL, Color.black));
 		Platform.add(new Instr(Prim.RECT, new Rectangle2D.Double(-48,-48,96,96)));
 		Platform.add(new Instr(Prim.RSHP, new Ellipse2D.Double(-4,-4,8,8)));
@@ -140,5 +127,4 @@
 	static {
 		RadioTV.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_BEVEL)));
-		RadioTV.add(new Instr(Prim.FILL, Color.black));
 		RadioTV.add(new Instr(Prim.EARC, new Arc2D.Double(-30.0,-180.0,60.0,60.0,45.0,-90.0,Arc2D.OPEN)));
 		RadioTV.add(new Instr(Prim.EARC, new Arc2D.Double(-45.0,-195.0,90.0,90.0,45.0,-90.0,Arc2D.OPEN)));
@@ -149,5 +135,4 @@
 	static {
 		Spire.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		Spire.add(new Instr(Prim.FILL, Color.black));
 		Spire.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-25,-25,50,50)));
 		Spire.add(new Instr(Prim.RSHP, new Ellipse2D.Double(-4,-4,8,8)));
@@ -173,5 +158,4 @@
 		WaterTower.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
 		WaterTower.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		WaterTower.add(new Instr(Prim.FILL, Color.black));
 		WaterTower.add(new Instr(Prim.LINE, new Line2D.Double(-25,0,-15,-120)));
 		WaterTower.add(new Instr(Prim.LINE, new Line2D.Double(25,0,15,-120)));
@@ -182,5 +166,4 @@
 		WindMotor.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
 		WindMotor.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
-		WindMotor.add(new Instr(Prim.FILL, Color.black));
 		WindMotor.add(new Instr(Prim.LINE, new Line2D.Double(0,-10,0,-90)));
 		WindMotor.add(new Instr(Prim.LINE, new Line2D.Double(0,-90,30,-90)));
@@ -191,5 +174,4 @@
 	static {
 		Windmill.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		Windmill.add(new Instr(Prim.FILL, Color.black));
 		Windmill.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-12,-12,24,24)));
 		Windmill.add(new Instr(Prim.LINE, new Line2D.Double(-30,-42,30,10)));
@@ -200,5 +182,4 @@
 		Windsock.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
 		Windsock.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
-		Windsock.add(new Instr(Prim.FILL, Color.black));
 		Windsock.add(new Instr(Prim.LINE, new Line2D.Double(0,-10,0,-100)));
 		Windsock.add(new Instr(Prim.STRK, new BasicStroke(8, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
Index: applications/editors/josm/plugins/smed2/src/symbols/Symbols.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/symbols/Symbols.java	(revision 30021)
+++ applications/editors/josm/plugins/smed2/src/symbols/Symbols.java	(revision 30022)
@@ -61,4 +61,9 @@
 			col = icol;
 		}
+		public Scheme(Color icol) {
+			pat = new ArrayList<Patt>();
+			col = new ArrayList<Color>();
+			col.add(icol);
+		}
 	}
 
@@ -119,7 +124,11 @@
 		int pn = 0;
 		int cn = 0;
+		g2.setPaint(Color.black);
 		if (cs != null) {
 			pn = cs.pat.size();
 			cn = cs.col.size() - ((pn != 0) ? pn - 1 : 0);
+			if ((pn == 0) && (cs.col.size() == 1)) {
+				g2.setPaint(cs.col.get(0));
+			}
 		}
 		AffineTransform savetr = g2.getTransform();
@@ -262,5 +271,5 @@
 				case SYMB:
 					SubSymbol s = (SubSymbol) item.params;
-					drawSymbol(g2, s.instr, s.scale, s.x, s.y, s.delta, s.scheme);
+					drawSymbol(g2, s.instr, s.scale, s.x, s.y, s.delta, (s.scheme != null ? s.scheme : cs));
 					break;
 				case TEXT:
