Index: applications/editors/josm/plugins/mappaint/src/mappaint/ElemStyleHandler.java
===================================================================
--- applications/editors/josm/plugins/mappaint/src/mappaint/ElemStyleHandler.java	(revision 2688)
+++ applications/editors/josm/plugins/mappaint/src/mappaint/ElemStyleHandler.java	(revision 2708)
@@ -1,4 +1,5 @@
 package mappaint;
 
+import java.io.File;
 import java.awt.Color;
 import java.awt.Toolkit;
@@ -8,4 +9,5 @@
 
 import org.openstreetmap.josm.tools.ColorHelper;
+import org.openstreetmap.josm.plugins.Plugin;
 import org.xml.sax.Attributes;
 import org.xml.sax.helpers.DefaultHandler;
@@ -96,6 +98,18 @@
                 {
                     if(atts.getQName(count).equals("src")) {
-                        URL path = getClass().getResource("/images/nodes/"+atts.getValue(count));
-                        curIcon = new ImageIcon(Toolkit.getDefaultToolkit().createImage(path));
+												String imageFile = MapPaintPlugin.getIconsDir()+atts.getValue(count); 
+												File f = new File(imageFile);
+												if (f.exists()){
+													//open icon from user directory
+                        	curIcon = new ImageIcon(imageFile);
+												} else {
+													URL path = getClass().getResource("/standard/icons/"+atts.getValue(count));
+													if (path != null ) {
+														curIcon = new ImageIcon(Toolkit.getDefaultToolkit().createImage(path));
+													} else{
+														path = getClass().getResource("/standard/icons/amenity.png");
+														curIcon = new ImageIcon(Toolkit.getDefaultToolkit().createImage(path));
+													}
+												}
                     } else if (atts.getQName(count).equals("annotate"))
                         curAnnotate = Boolean.parseBoolean
Index: applications/editors/josm/plugins/mappaint/src/mappaint/MapPaintPlugin.java
===================================================================
--- applications/editors/josm/plugins/mappaint/src/mappaint/MapPaintPlugin.java	(revision 2688)
+++ applications/editors/josm/plugins/mappaint/src/mappaint/MapPaintPlugin.java	(revision 2708)
@@ -16,6 +16,13 @@
 
 	public static ElemStyles elemStyles = new ElemStyles();
+	
+	public static String iconsDir;
+
+	public static String getIconsDir(){
+		return iconsDir;
+	}
 
 	public MapPaintPlugin() {
+		iconsDir = getPluginDir()+"icons/"; //some day we will support diferent icon directories over options
 		String elemStylesFile = getPluginDir()+"elemstyles.xml";
 		File f = new File(elemStylesFile);
Index: applications/editors/josm/plugins/mappaint/src/mappaint/MapPaintVisitor.java
===================================================================
--- applications/editors/josm/plugins/mappaint/src/mappaint/MapPaintVisitor.java	(revision 2688)
+++ applications/editors/josm/plugins/mappaint/src/mappaint/MapPaintVisitor.java	(revision 2708)
@@ -35,17 +35,15 @@
 	// Altered from SimplePaintVisitor
 	@Override public void visit(Node n) {
-		if (!n.shown) {
-			ElemStyle nodeStyle = MapPaintPlugin.elemStyles.getStyle(n);
-			if(nodeStyle!=null && Main.map.mapView.zoom()>=nodeStyle.getMinZoom()){
-				if(nodeStyle instanceof IconElemStyle) {
-					drawNode(n, ((IconElemStyle)nodeStyle).getIcon());
-				} else {
-					// throw some sort of exception
-				}
+		ElemStyle nodeStyle = MapPaintPlugin.elemStyles.getStyle(n);
+		if(nodeStyle!=null && Main.map.mapView.zoom()>=nodeStyle.getMinZoom()){
+			if(nodeStyle instanceof IconElemStyle) {
+				drawNode(n, ((IconElemStyle)nodeStyle).getIcon());
 			} else {
-				drawNode(n, n.selected ? getPreferencesColor("selected",
-										Color.YELLOW)
-					: getPreferencesColor("node", Color.RED));
-			}
+				// throw some sort of exception
+			}
+		} else {
+			drawNode(n, n.selected ? getPreferencesColor("selected",
+									Color.YELLOW)
+				: getPreferencesColor("node", Color.RED));
 		}
 	}
@@ -135,6 +133,4 @@
 	// NEW
 	protected void drawNode(Node n, ImageIcon icon) {
-		if (n.shown) return;
-		n.shown=true;
 		Point p = nc.getPoint(n.eastNorth);
 		if ((p.x < 0) || (p.y < 0) || (p.x > nc.getWidth()) || (p.y > nc.getHeight())) return;
@@ -221,8 +217,4 @@
 				osm.shown=false;
 
-		for (final OsmPrimitive osm : data.nodes)
-			if (!osm.deleted)
-				osm.shown=false;
-				
 		for (final OsmPrimitive osm : data.ways)
 			if (!osm.deleted && MapPaintPlugin.elemStyles.isArea(osm))
