Index: applications/editors/josm/plugins/mappaint/src/mappaint/ElemStyleHandler.java
===================================================================
--- applications/editors/josm/plugins/mappaint/src/mappaint/ElemStyleHandler.java	(revision 2796)
+++ applications/editors/josm/plugins/mappaint/src/mappaint/ElemStyleHandler.java	(revision 2807)
@@ -107,6 +107,13 @@
                         	curIcon = new ImageIcon(imageFile);
 												} else {
+													try {
+														URL path = getClass().getResource("/standard/icons/"+atts.getValue(count));
+														curIcon = new ImageIcon(Toolkit.getDefaultToolkit().createImage(path));
+													}
+													catch (Exception e){
 														URL path = getClass().getResource("/standard/icons/amenity.png");
 														curIcon = new ImageIcon(Toolkit.getDefaultToolkit().createImage(path));
+
+													}
 												}
                     } else if (atts.getQName(count).equals("annotate"))
Index: applications/editors/josm/plugins/mappaint/src/mappaint/MapPaintVisitor.java
===================================================================
--- applications/editors/josm/plugins/mappaint/src/mappaint/MapPaintVisitor.java	(revision 2796)
+++ applications/editors/josm/plugins/mappaint/src/mappaint/MapPaintVisitor.java	(revision 2807)
@@ -65,4 +65,6 @@
 	@Override public void visit(Way w) {
 		double circum = Main.map.mapView.getScale()*100*Main.proj.scaleFactor()*40041455; // circumference of the earth in meter
+		boolean showDirection =	Main.pref.getBoolean("draw.segment.direction") ;
+		if (Main.pref.getBoolean("mappaint.useRealWidth",false) && showDirection && !w.selected) showDirection = false;
 		Color colour = getPreferencesColor("untagged",Color.GRAY);
 		int width = 2;
@@ -94,15 +96,15 @@
 				if (area && fillAreas)
 					//Draw segments in a different colour so direction arrows show against the fill
-					drawSegment(ls, w.selected ? getPreferencesColor("selected", Color.YELLOW) : getPreferencesColor("untagged",Color.GRAY),Main.pref.getBoolean("draw.segment.direction"), width,true);
+					drawSegment(ls, w.selected ? getPreferencesColor("selected", Color.YELLOW) : getPreferencesColor("untagged",Color.GRAY),showDirection, width,true);
 				else
 					if (area)
-						drawSegment(ls, w.selected ? getPreferencesColor("selected", Color.YELLOW) : colour,Main.pref.getBoolean("draw.segment.direction"), width,true);
+						drawSegment(ls, w.selected ? getPreferencesColor("selected", Color.YELLOW) : colour,showDirection, width,true);
 					else
-						if (realWidth > 0 && Main.pref.getBoolean("mappaint.useRealWidth",false)){
+						if (realWidth > 0 && Main.pref.getBoolean("mappaint.useRealWidth",false) && !showDirection){
 							int tmpWidth = (int) (100 /  (float) (circum / realWidth));
 							if (tmpWidth > width) width = tmpWidth;
 						}
 
-						drawSegment(ls, w.selected ? getPreferencesColor("selected", Color.YELLOW) : colour,Main.pref.getBoolean("draw.segment.direction"), width,false);
+						drawSegment(ls, w.selected ? getPreferencesColor("selected", Color.YELLOW) : colour,showDirection, width,false);
 				if (!ls.incomplete && Main.pref.getBoolean("draw.segment.order_number"))
 				{
@@ -169,4 +171,5 @@
 	// Altered - now specify width
 	@Override protected void drawSegment(Segment ls, Color col,boolean showDirection) {
+			if (Main.pref.getBoolean("mappaint.useRealWidth",false) && showDirection && !ls.selected) showDirection = false;
 			drawSegment(ls,col,showDirection,1,false);
 	}
@@ -188,5 +191,6 @@
 			g2d.setStroke(new BasicStroke(width,BasicStroke.CAP_BUTT,BasicStroke.JOIN_ROUND,0,new float[] {9},0));
 		else 
-			g2d.setStroke(new BasicStroke(width));
+			g2d.setStroke(new BasicStroke(width,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND));
+			//g2d.setStroke(new BasicStroke(width));
 
 		Point p1 = nc.getPoint(ls.from.eastNorth);
