Index: /applications/editors/josm/plugins/smed2/src/seamap/Renderer.java
===================================================================
--- /applications/editors/josm/plugins/smed2/src/seamap/Renderer.java	(revision 30028)
+++ /applications/editors/josm/plugins/smed2/src/seamap/Renderer.java	(revision 30029)
@@ -330,76 +330,56 @@
 
 	public static void labelText(Feature feature, String str, Font font, LabelStyle style, Color fg, Color bg, Delta delta) {
-		if (delta == null) delta = new Delta(Handle.CC, null);
+		if (delta == null) delta = new Delta(Handle.CC, AffineTransform.getTranslateInstance(0, 0));
 		if (bg == null) bg = new Color(0x00000000, true);
-		if (str == null) str = " ";
-		if (str.isEmpty()) str = " ";
+		if ((str == null) || (str.isEmpty())) str = " ";
     FontRenderContext frc = g2.getFontRenderContext();
-    GlyphVector gv = font.deriveFont((float)(font.getSize())).createGlyphVector(frc, str.equals(" ") ? "M" : str);
+    GlyphVector gv = font.deriveFont((float)(font.getSize())).createGlyphVector(frc, str.equals(" ") ? "!" : str);
     Rectangle2D bounds = gv.getVisualBounds();
     double width = bounds.getWidth();
     double height = bounds.getHeight();
-		if (width < height) width = height;
-    double dx = 0;
-    double dy = 0;
-		switch (delta.h) {
-		case CC:
-			dx += width / 2.0;
-			dy += height / 2.0;
-			break;
-		case TR:
-			dx += width;
-			break;
-		case TC:
-			dx += width / 2.0;
-			break;
-		case LC:
-			dy += height / 2.0;
-			break;
-		case RC:
-			dx += width;
-			dy += height / 2.0;
-			break;
-		case BL:
-			dy += height;
-			break;
-		case BR:
-			dx += width;
-			dy += height;
-			break;
-		case BC:
-			dx += width / 2.0;
-			dy += height;
-			break;
-		}
-		width += (height * 0.8);
-		dx += (height * 0.4);
-		height *= 1.5;
-		dy += (height * 0.15);
 		Symbol label = new Symbol();
+		double lx = 0;
+		double ly = 0;
+		double tx = 0;
+		double ty = 0;
 		switch (style) {
 		case RRCT:
+			width += height * 1.0;
+			height *= 1.5;
+	    if (width < height) width = height;
+	    lx = -width / 2;
+	    ly = -height / 2;
+	    tx = lx + (height * 0.34);
+	    ty = ly + (height * 0.17);
+			label.add(new Instr(Prim.BBOX, new Rectangle2D.Double(lx,ly,width,height)));
 			label.add(new Instr(Prim.FILL, bg));
-			label.add(new Instr(Prim.RSHP, new RoundRectangle2D.Double(-dx,-dy,width,height,height,height)));
+			label.add(new Instr(Prim.RSHP, new RoundRectangle2D.Double(lx,ly,width,height,height,height)));
 			label.add(new Instr(Prim.FILL, fg));
 			label.add(new Instr(Prim.STRK, new BasicStroke(1 + (int)(height/10), BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-			label.add(new Instr(Prim.RRCT, new RoundRectangle2D.Double(-dx,-dy,width,height,height,height)));
+			label.add(new Instr(Prim.RRCT, new RoundRectangle2D.Double(lx,ly,width,height,height,height)));
 			break;
 		case VCLR:
-			height += 20;
-			dy += 10;
+			width += height * 1.0;
+			height *= 2.0;
+	    if (width < height) width = height;
+	    lx = -width / 2;
+	    ly = -height / 2;
+	    tx = lx + (height * 0.27);
+	    ty = ly + (height * 0.25);
+			label.add(new Instr(Prim.BBOX, new Rectangle2D.Double(lx,ly,width,height)));
 			label.add(new Instr(Prim.FILL, bg));
-			label.add(new Instr(Prim.RSHP, new RoundRectangle2D.Double(-dx,-dy,width,height,height,height)));
+			label.add(new Instr(Prim.RSHP, new RoundRectangle2D.Double(lx,ly,width,height,height,height)));
 			label.add(new Instr(Prim.FILL, fg));
 			int sw = 1 + (int)(height/10);
-			double po = dy - (sw / 2);
+			double po = sw / 2;
 			label.add(new Instr(Prim.STRK, new BasicStroke(sw, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-			Path2D.Double p = new Path2D.Double(); p.moveTo(-(height*0.2),po); p.lineTo((height*0.2),po); p.moveTo(0,po); p.lineTo(0,po-10);
-			p.moveTo(-(height*0.2),-po); p.lineTo((height*0.2),-po); p.moveTo(0,-po); p.lineTo(0,-po+10);
+			Path2D.Double p = new Path2D.Double(); p.moveTo(-height*0.2,-ly-po); p.lineTo(height*0.2,-ly-po); p.moveTo(0,-ly-po); p.lineTo(0,-ly-po-(height*0.15));
+			p.moveTo(-height*0.2,ly+po); p.lineTo((height*0.2),ly+po); p.moveTo(0,ly+po); p.lineTo(0,ly+po+(height*0.15));
 			label.add(new Instr(Prim.PLIN, p));
 			break;
 		}
-		label.add(new Instr(Prim.TEXT, new Caption(str, font, fg, delta)));
+		label.add(new Instr(Prim.TEXT, new Caption(str, font, fg, new Delta(Handle.TL, AffineTransform.getTranslateInstance(tx, ty)))));
 		Point2D point = context.getPoint(feature.centre);
-		Symbols.drawSymbol(g2, label, sScale, point.getX(), point.getY(), null, null);
+		Symbols.drawSymbol(g2, label, sScale, point.getX(), point.getY(), delta, null);
 	}
 
Index: /applications/editors/josm/plugins/smed2/src/seamap/Rules.java
===================================================================
--- /applications/editors/josm/plugins/smed2/src/seamap/Rules.java	(revision 30028)
+++ /applications/editors/josm/plugins/smed2/src/seamap/Rules.java	(revision 30029)
@@ -332,5 +332,5 @@
 			if (zoom >= 14) {
 				Renderer.symbol(feature, Harbours.Anchorage, null, null, new Scheme(Mline));
-				Renderer.labelText(feature, name == null ? " " : (String) name.val, new Font("Arial", Font.PLAIN, 30), LabelStyle.RRCT, Mline, Color.white, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, 0)));
+			Renderer.labelText(feature, name == null ? "" : (String) name.val, new Font("Arial", Font.PLAIN, 30), LabelStyle.RRCT, Mline, Color.white, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, 0)));
 			}
 			double radius = (Double)Renderer.getAttVal(feature, Obj.ACHBRT, 0, Att.RADIUS);
Index: /applications/editors/josm/plugins/smed2/src/symbols/Areas.java
===================================================================
--- /applications/editors/josm/plugins/smed2/src/symbols/Areas.java	(revision 30028)
+++ /applications/editors/josm/plugins/smed2/src/symbols/Areas.java	(revision 30029)
@@ -19,5 +19,5 @@
 	public static final Symbol Plane = new Symbol();
 	static {
-		Plane.add(new Instr(Prim.BBOX, new Rectangle(-60,-60,120,120)));
+		Plane.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-60,-60,120,120)));
 		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();
@@ -26,5 +26,5 @@
 	public static final Symbol Cable = new Symbol();
 	static {
-		Cable.add(new Instr(Prim.BBOX, new Rectangle(-30,-60,60,60)));
+		Cable.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-30,-60,60,60)));
 		Cable.add(new Instr(Prim.STRK, new BasicStroke(8, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
 		Cable.add(new Instr(Prim.FILL, new Color(0xc480ff)));
@@ -34,5 +34,5 @@
 	public static final Symbol LaneArrow = new Symbol();
 	static {
-		LaneArrow.add(new Instr(Prim.BBOX, new Rectangle(-20,-240,40,240)));
+		LaneArrow.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-20,-240,40,240)));
 		LaneArrow.add(new Instr(Prim.STRK, new BasicStroke(10, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
 		LaneArrow.add(new Instr(Prim.FILL, new Color(0x80c480ff, true)));
@@ -43,5 +43,5 @@
 	public static final Symbol LineAnchor = new Symbol();
 	static {
-		LineAnchor.add(new Instr(Prim.BBOX, new Rectangle(-30,-60,60,90)));
+		LineAnchor.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-30,-60,60,90)));
 		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)));
 	}
@@ -72,5 +72,5 @@
 	public static final Symbol Pipeline = new Symbol();
 	static {
-		Pipeline.add(new Instr(Prim.BBOX, new Rectangle(-15,-60,30,60)));
+		Pipeline.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-15,-60,30,60)));
 		Pipeline.add(new Instr(Prim.STRK, new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
 		Pipeline.add(new Instr(Prim.FILL, new Color(0xc480ff)));
@@ -80,5 +80,5 @@
 	public static final Symbol Restricted = new Symbol();
 	static {
-		Restricted.add(new Instr(Prim.BBOX, new Rectangle(-15,-30,30,30)));
+		Restricted.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-15,-30,30,30)));
 		Restricted.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
 		Restricted.add(new Instr(Prim.LINE, new Line2D.Double(0,0,0,-30)));
@@ -125,5 +125,5 @@
 	public static final Symbol Seaplane = new Symbol();
 	static {
-		Seaplane.add(new Instr(Prim.BBOX, new Rectangle(-60,-60,120,120)));
+		Seaplane.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-60,-60,120,120)));
 		Seaplane.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
 		Seaplane.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-58,-58,116,116)));
Index: /applications/editors/josm/plugins/smed2/src/symbols/Harbours.java
===================================================================
--- /applications/editors/josm/plugins/smed2/src/symbols/Harbours.java	(revision 30028)
+++ /applications/editors/josm/plugins/smed2/src/symbols/Harbours.java	(revision 30029)
@@ -12,5 +12,4 @@
 import java.awt.BasicStroke;
 import java.awt.Color;
-import java.awt.Rectangle;
 import java.awt.geom.*;
 
@@ -20,5 +19,5 @@
 	public static final Symbol Anchor = new Symbol();
 	static {
-		Anchor.add(new Instr(Prim.BBOX, new Rectangle(-60,-60,120,120)));
+		Anchor.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-60,-60,120,120)));
 		Anchor.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
 		Anchor.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-10,-59,20,20)));
@@ -61,5 +60,5 @@
 	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.BBOX, new Rectangle2D.Double(-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)));
@@ -97,5 +96,5 @@
 	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.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
 		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)));
@@ -120,5 +119,5 @@
 	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.BBOX, new Rectangle2D.Double(-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)));
Index: /applications/editors/josm/plugins/smed2/src/symbols/Notices.java
===================================================================
--- /applications/editors/josm/plugins/smed2/src/symbols/Notices.java	(revision 30028)
+++ /applications/editors/josm/plugins/smed2/src/symbols/Notices.java	(revision 30029)
@@ -13,5 +13,4 @@
 import java.awt.Color;
 import java.awt.Font;
-import java.awt.Rectangle;
 import java.awt.geom.*;
 import java.util.ArrayList;
@@ -264,5 +263,5 @@
 	public static final Symbol NoticeA10a = new Symbol();
 	static {
-		NoticeA10a.add(new Instr(Prim.BBOX, new Rectangle(-30,-30,60,60)));
+		NoticeA10a.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
 		NoticeA10a.add(new Instr(Prim.FILL, Color.white));
 		Path2D.Double p = new Path2D.Double(); p.moveTo(0,-30); p.lineTo(30,0); p.lineTo(0,30); p.closePath();
@@ -479,5 +478,5 @@
 	public static final Symbol NoticeD1a = new Symbol();
 	static {
-		NoticeD1a.add(new Instr(Prim.BBOX, new Rectangle(-30,-30,60,60)));
+		NoticeD1a.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
 		NoticeD1a.add(new Instr(Prim.FILL, Color.yellow));
 		Path2D.Double p = new Path2D.Double(); p.moveTo(0,-30); p.lineTo(-30,0); p.lineTo(0,30); p.lineTo(30,0); p.closePath();
@@ -489,5 +488,5 @@
 	public static final Symbol NoticeD1b = new Symbol();
 	static {
-		NoticeD1b.add(new Instr(Prim.BBOX, new Rectangle(-30,-30,60,60)));
+		NoticeD1b.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
 		NoticeD1b.add(new Instr(Prim.FILL, Color.yellow));
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-30,0); p.lineTo(-15,15); p.lineTo(15,-15); p.lineTo(30,0);	p.lineTo(15,15); p.lineTo(-15,-15); p.closePath();
@@ -499,5 +498,5 @@
 	public static final Symbol NoticeD2a = new Symbol();
 	static {
-		NoticeD2a.add(new Instr(Prim.BBOX, new Rectangle(-30,-30,60,60)));
+		NoticeD2a.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
 		NoticeD2a.add(new Instr(Prim.FILL, Color.white));
 		Path2D.Double p = new Path2D.Double(); p.moveTo(0,-30); p.lineTo(30,0); p.lineTo(0,30); p.closePath();
@@ -974,5 +973,5 @@
 	public static final Symbol NoticeBnank = new Symbol();
 	static {
-		NoticeBnank.add(new Instr(Prim.BBOX, new Rectangle(-30,-30,60,60)));
+		NoticeBnank.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
 		Symbol colours = new Symbol();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(0.0,-80.0); p.lineTo(-15.0,-47.0); p.lineTo(15.0,-47.0); p.closePath();
Index: /applications/editors/josm/plugins/smed2/src/symbols/Symbols.java
===================================================================
--- /applications/editors/josm/plugins/smed2/src/symbols/Symbols.java	(revision 30028)
+++ /applications/editors/josm/plugins/smed2/src/symbols/Symbols.java	(revision 30029)
@@ -14,5 +14,4 @@
 import java.awt.Font;
 import java.awt.Graphics2D;
-import java.awt.Rectangle;
 import java.awt.font.TextLayout;
 import java.awt.geom.*;
@@ -139,5 +138,5 @@
 				switch (item.type) {
 				case BBOX:
-					Rectangle bbox = (Rectangle) item.params;
+					Rectangle2D.Double bbox = (Rectangle2D.Double) item.params;
 					double dx = 0.0;
 					double dy = 0.0;
Index: /applications/editors/josm/plugins/smed2/src/symbols/Topmarks.java
===================================================================
--- /applications/editors/josm/plugins/smed2/src/symbols/Topmarks.java	(revision 30028)
+++ /applications/editors/josm/plugins/smed2/src/symbols/Topmarks.java	(revision 30029)
@@ -12,9 +12,5 @@
 import java.awt.BasicStroke;
 import java.awt.Color;
-import java.awt.Rectangle;
-import java.awt.geom.AffineTransform;
-import java.awt.geom.Ellipse2D;
-import java.awt.geom.Line2D;
-import java.awt.geom.Path2D;
+import java.awt.geom.*;
 import java.util.EnumMap;
 
@@ -26,5 +22,5 @@
 	public static final Symbol TopBoard = new Symbol();
 	static {
-		TopBoard.add(new Instr(Prim.BBOX, new Rectangle(-20,-80,40,80)));
+		TopBoard.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-20,-80,40,80)));
 		Symbol colours = new Symbol();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-19.0,-2.0); p.lineTo(-19.0,-39.0); p.lineTo(19.0,-39.0); p.lineTo(19.0,-2.0); p.closePath();
@@ -38,5 +34,5 @@
 	public static final Symbol TopCan = new Symbol();
 	static {
-		TopCan.add(new Instr(Prim.BBOX, new Rectangle(-20,-80,40,80)));
+		TopCan.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-20,-80,40,80)));
 		Symbol colours = new Symbol();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-12.0,-15.0); p.lineTo(-12.0,-48.0); p.lineTo(12.0,-48.0); p.lineTo(12.0,-15.0); p.closePath();
@@ -51,5 +47,5 @@
 	public static final Symbol TopCone = new Symbol();
 	static {
-		TopCone.add(new Instr(Prim.BBOX, new Rectangle(-20,-80,40,80)));
+		TopCone.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-20,-80,40,80)));
 		Symbol colours = new Symbol();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0,-15.0); p.lineTo(0.0,-45.0); p.lineTo(15.0,-15.0); p.closePath();
@@ -64,5 +60,5 @@
 	public static final Symbol TopCross = new Symbol();
 	static {
-		TopCross.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
+		TopCross.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-30,-80,60,80)));
 		Symbol colours = new Symbol();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-5.0,-15.0); p.lineTo(-5.0,-32.5); p.lineTo(-22.5,-32.5);	p.lineTo(-22.5,-42.5); p.lineTo(-5.0,-42.5);
@@ -80,5 +76,5 @@
 	public static final Symbol TopEast = new Symbol();
 	static {
-		TopEast.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
+		TopEast.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-30,-80,60,80)));
 		Symbol colours = new Symbol();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(0.0,-80.0); p.lineTo(-15.0,-47.0); p.lineTo(15.0,-47.0); p.closePath();
@@ -98,5 +94,5 @@
 	public static final Symbol TopIsol = new Symbol();
 	static {
-		TopIsol.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
+		TopIsol.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-30,-80,60,80)));
 		Symbol colours = new Symbol();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-13.0,-55.0); p.curveTo(-13.0, -72.3, 13.0, -72.3, 13.0,-55.0); p.curveTo(13.0, -37.7, -13.0, -37.7, -13.0,-55.0); p.closePath();
@@ -114,5 +110,5 @@
 	public static final Symbol TopMooring = new Symbol();
 	static {
-		TopMooring.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
+		TopMooring.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-30,-80,60,80)));
 		TopMooring.add(new Instr(Prim.STRK, new BasicStroke(3, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
 		TopMooring.add(new Instr(Prim.FILL, Color.black));
@@ -122,5 +118,5 @@
 	public static final Symbol TopNorth = new Symbol();
 	static {
-		TopNorth.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
+		TopNorth.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-30,-80,60,80)));
 		Symbol colours = new Symbol();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(0.0,-78.0); p.lineTo(-15.0,-45.0); p.lineTo(15.0,-45.0); p.closePath();
@@ -139,5 +135,5 @@
 	public static final Symbol TopSouth = new Symbol();
 	static {
-		TopSouth.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
+		TopSouth.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-30,-80,60,80)));
 		Symbol colours = new Symbol();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0,-78.0); p.lineTo(0.0,-45.0);  p.lineTo(15.0,-78.0); p.closePath();
@@ -156,5 +152,5 @@
 	public static final Symbol TopSphere = new Symbol();
 	static {
-		TopSphere.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
+		TopSphere.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-30,-80,60,80)));
 		Symbol colours = new Symbol();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-14.0,-28.0); p.curveTo(-14.0,-46.7,14.0,-46.7,14.0,-28.0); p.curveTo(14.0,-9.3,-14.0,-9.3,-14.0,-28.0); p.closePath();
@@ -169,5 +165,5 @@
 	public static final Symbol TopSquare = new Symbol();
 	static {
-		TopSquare.add(new Instr(Prim.BBOX, new Rectangle(-20,-80,40,80)));
+		TopSquare.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-20,-80,40,80)));
 		Symbol colours = new Symbol();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-13.0,-1.0); p.lineTo(-13.0,-27.0); p.lineTo(13.0,-27.0); p.lineTo(13.0,-1.0); p.closePath();
@@ -181,5 +177,5 @@
 	public static final Symbol TopTriangle = new Symbol();
 	static {
-		TopTriangle.add(new Instr(Prim.BBOX, new Rectangle(-20,-80,40,80)));
+		TopTriangle.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-20,-80,40,80)));
 		Symbol colours = new Symbol();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0,-1.0); p.lineTo(0.0,-29.0); p.lineTo(15.0,-1.0); p.closePath();
@@ -193,5 +189,5 @@
 	public static final Symbol TopWest = new Symbol();
 	static {
-		TopWest.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
+		TopWest.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-30,-80,60,80)));
 		Symbol colours = new Symbol();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0,-78.0); p.lineTo(0.0,-45.0);  p.lineTo(15.0,-78.0); p.closePath();
@@ -210,5 +206,5 @@
 	public static final Symbol TopX = new Symbol();
 	static {
-		TopX.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
+		TopX.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-30,-80,60,80)));
 		Symbol colours = new Symbol();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(0.0,-27.7); p.lineTo(-12.4,-15.7); p.lineTo(-19.3,-22.6); p.lineTo(-7.3,-35.0); p.lineTo(-19.3,-47.3);
