Index: /home/dnaber/workspace/JOSM/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- /home/dnaber/workspace/JOSM/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 623)
+++ /home/dnaber/workspace/JOSM/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(working copy)
@@ -10,7 +10,9 @@
 import java.awt.Graphics;
 import java.awt.GridBagLayout;
 import java.awt.Point;
+import java.awt.Transparency;
 import java.awt.event.ActionEvent;
+import java.awt.image.BufferedImage;
 import java.io.File;
 import java.util.Collection;
 import java.util.HashSet;
@@ -170,10 +172,14 @@
 		}
 		else
 		{
-			standardMapPainter.setGraphics(g);
+			// MapPaintVisitor paints calls fillPolygon() with an alpha
+			// channel -- this is slow, speed it up by rendering to a BufferedImage:
+			BufferedImage bim = new BufferedImage(mv.getWidth(), mv.getHeight(), Transparency.OPAQUE);
+			standardMapPainter.setGraphics(bim.createGraphics());
 			standardMapPainter.setNavigatableComponent(mv);
 			standardMapPainter.inactive = inactive;
 			standardMapPainter.visitAll(data);
+			g.drawImage(bim, 0, 0, null);
 		}
 		Main.map.conflictDialog.paintConflicts(g, mv);
 	}
