Index: src/org/openstreetmap/josm/gui/mappaint/ElemStyle.java
===================================================================
--- src/org/openstreetmap/josm/gui/mappaint/ElemStyle.java	(revision 3157)
+++ src/org/openstreetmap/josm/gui/mappaint/ElemStyle.java	(working copy)
@@ -16,6 +16,10 @@
     public String code;
     Collection<Rule> rules = null;
 
+    public enum NodeBorderStyle {
+        NONE, SQUARE, TRIANGLE
+    }
+
     @Override
     public boolean equals(Object o) {
         return (o instanceof ElemStyle) && (((ElemStyle) o).getCode().equals(getCode()));
Index: src/org/openstreetmap/josm/gui/mappaint/SimpleNodeElemStyle.java
===================================================================
--- src/org/openstreetmap/josm/gui/mappaint/SimpleNodeElemStyle.java	(revision 3157)
+++ src/org/openstreetmap/josm/gui/mappaint/SimpleNodeElemStyle.java	(working copy)
@@ -20,16 +20,20 @@
             boolean selected) {
         Node n = (Node)primitive;
         String name = painter.isShowNames()?painter.getNodeName(n):null;
+        NodeBorderStyle border = NodeBorderStyle.NONE;
+        if (n.isConnection()) {
+            border = NodeBorderStyle.SQUARE;
+        }
         if (n.isHighlighted()) {
-            painter.drawNode(n, settings.getHighlightColor(), settings.getSelectedNodeSize(), settings.isFillSelectedNode(), name);
+            painter.drawNode(n, settings.getHighlightColor(), settings.getSelectedNodeSize(), settings.isFillSelectedNode(), name, border);
         } else if (selected) {
-            painter.drawNode(n, settings.getSelectedColor(), settings.getSelectedNodeSize(), settings.isFillSelectedNode(), name);
+            painter.drawNode(n, settings.getSelectedColor(), settings.getSelectedNodeSize(), settings.isFillSelectedNode(), name, border);
         } else if (n.isTagged()) {
-            painter.drawNode(n, settings.getNodeColor(), settings.getTaggedNodeSize(), settings.isFillUnselectedNode(), name);
+            painter.drawNode(n, settings.getNodeColor(), settings.getTaggedNodeSize(), settings.isFillUnselectedNode(), name, border);
         } else if (painter.isInactive() || n.isDisabled()) {
-            painter.drawNode(n, settings.getInactiveColor(), settings.getUnselectedNodeSize(), settings.isFillUnselectedNode(), name);
+            painter.drawNode(n, settings.getInactiveColor(), settings.getUnselectedNodeSize(), settings.isFillUnselectedNode(), name, border);
         } else {
-            painter.drawNode(n, settings.getNodeColor(), settings.getUnselectedNodeSize(), settings.isFillUnselectedNode(), name);
+            painter.drawNode(n, settings.getNodeColor(), settings.getUnselectedNodeSize(), settings.isFillUnselectedNode(), name, border);
         }
     }
 
Index: src/org/openstreetmap/josm/data/osm/Node.java
===================================================================
--- src/org/openstreetmap/josm/data/osm/Node.java	(revision 3157)
+++ src/org/openstreetmap/josm/data/osm/Node.java	(working copy)
@@ -195,4 +195,8 @@
     public void updatePosition() {
         // Do nothing for now, but in future replace CachedLatLon with simple doubles and update precalculated EastNorth value here
     }
+
+    public boolean isConnection() {
+        return (OsmPrimitive.getFilteredList(getReferrers(), Way.class)).size() > 1;
+    }
 }
Index: src/org/openstreetmap/josm/data/osm/visitor/paint/MapPainter.java
===================================================================
--- src/org/openstreetmap/josm/data/osm/visitor/paint/MapPainter.java	(revision 3157)
+++ src/org/openstreetmap/josm/data/osm/visitor/paint/MapPainter.java	(working copy)
@@ -22,6 +22,7 @@
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.NavigatableComponent;
+import org.openstreetmap.josm.gui.mappaint.ElemStyle.NodeBorderStyle;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.LanguageInfo;
 
@@ -210,6 +211,10 @@
      * @param color The color of the node.
      */
     public void drawNode(Node n, Color color, int size, boolean fill, String name) {
+        drawNode(n, color, size, fill, name, NodeBorderStyle.NONE);
+    }
+
+    public void drawNode(Node n, Color color, int size, boolean fill, String name, NodeBorderStyle border) {
         if (size > 1) {
             int radius = size / 2;
             Point p = nc.getPoint(n);
@@ -229,6 +234,10 @@
                 g.drawRect(p.x - radius, p.y - radius, size, size);
             }
 
+            if (border == NodeBorderStyle.SQUARE) {
+                g.drawRect(p.x - 2*radius, p.y - 2*radius, 2*size, 2*size);
+            }
+
             if(name != null)            {
                 if (inactive || n.isDisabled()) {
                     g.setColor(inactiveColor);
