Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java	(revision 774)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java	(revision 775)
@@ -86,4 +86,6 @@
 
 	private int unselectedNodeRadius;
+	
+	private int taggedNodeRadius;
 
 	private int selectedNodeSize;
@@ -92,4 +94,5 @@
 
 	private int defaultSegmentWidth = 2;
+	private int taggedNodeSize;
 
     public final static Color darkerblue = new Color(0,0,96);
@@ -144,4 +147,6 @@
 			if (n.selected)
 				drawNode(n, selectedColor, selectedNodeSize, selectedNodeRadius, fillSelectedNode);
+			else if (n.tagged)
+				drawNode(n, nodeColor, taggedNodeSize, taggedNodeRadius, fillUnselectedNode);
 			else
 				drawNode(n, nodeColor, unselectedNodeSize, unselectedNodeRadius, fillUnselectedNode);
@@ -352,7 +357,8 @@
 				return;
 			g.setColor(color);
-			if (fill)
+			if (fill) {
 				g.fillRect(p.x - radius, p.y - radius, size, size);
-			else
+				g.drawRect(p.x - radius, p.y - radius, size, size);
+			} else
 				g.drawRect(p.x - radius, p.y - radius, size, size);
 		}
@@ -380,7 +386,12 @@
 		        5) / 2;
 		selectedNodeSize = selectedNodeRadius * 2;
+
 		unselectedNodeRadius = Main.pref.getInteger(
 		        "mappaint.node.unselected-size", 3) / 2;
 		unselectedNodeSize = unselectedNodeRadius * 2;
+
+		taggedNodeRadius = Main.pref.getInteger(
+				"mappaint.node.tagged-size", 5) / 2;
+		taggedNodeSize = taggedNodeRadius * 2;
 
 		defaultSegmentWidth = Main.pref.getInteger(
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/SimplePaintVisitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/SimplePaintVisitor.java	(revision 774)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/SimplePaintVisitor.java	(revision 775)
@@ -86,4 +86,6 @@
 
 	Rectangle bbox = new Rectangle();
+	private int taggedNodeRadius;
+	private int taggedNodeSize;
 
 	public void visitAll(DataSet data) {
@@ -107,4 +109,8 @@
 		unselectedNodeSize = unselectedNodeRadius * 2;
 
+		taggedNodeRadius = Main.pref.getInteger(
+				"mappaint.node.tagged-size", 5) / 2;
+		taggedNodeSize = taggedNodeRadius * 2;
+
 		defaultSegmentWidth = Main.pref.getInteger(
 		        "mappaint.segment.default-width", 2);
@@ -161,5 +167,7 @@
 		else if (n.selected)
 			drawNode(n, selectedColor, selectedNodeSize, selectedNodeRadius, fillSelectedNode);
-		else
+		else if(n.tagged)
+			drawNode(n, nodeColor, taggedNodeSize, taggedNodeRadius, fillUnselectedNode);
+		else 
 			drawNode(n, nodeColor, unselectedNodeSize, unselectedNodeRadius, fillUnselectedNode);
 	}
@@ -276,7 +284,8 @@
 				return;
 			g.setColor(color);
-			if (fill)
+			if (fill) {
 				g.fillRect(p.x - radius, p.y - radius, size, size);
-			else
+				g.drawRect(p.x - radius, p.y - radius, size, size);
+			} else
 				g.drawRect(p.x - radius, p.y - radius, size, size);
 		}
Index: trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 774)
+++ trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 775)
@@ -86,4 +86,6 @@
 	private LinkedList<MapViewPaintable> temporaryLayers = new LinkedList<MapViewPaintable>();
 	
+	private BufferedImage offscreenBuffer;
+	
 	/**
 	 * The listener of the active layer changes.
@@ -204,7 +206,13 @@
 		if (center == null)
 			return; // no data loaded yet.
-		
-		BufferedImage bim = new BufferedImage(getWidth(), getHeight(), Transparency.OPAQUE);
-		Graphics2D tempG = bim.createGraphics();
+
+		// re-create offscreen-buffer if we've been resized, otherwise
+		// just re-use it.
+		if (null == offscreenBuffer || offscreenBuffer.getWidth() != getWidth()
+		        || offscreenBuffer.getHeight() != getHeight())
+			offscreenBuffer = new BufferedImage(getWidth(), getHeight(),
+			        BufferedImage.TYPE_INT_ARGB);
+
+		Graphics2D tempG = offscreenBuffer.createGraphics();
 		tempG.setColor(Preferences.getPreferencesColor("background", Color.BLACK));
 		tempG.fillRect(0, 0, getWidth(), getHeight());
@@ -238,5 +246,5 @@
 			playHeadMarker.paint(tempG, this);
 
-		g.drawImage(bim, 0, 0, null);
+		g.drawImage(offscreenBuffer, 0, 0, null);
 		super.paint(g);
 	}
