diff --git src/org/openstreetmap/josm/gui/OsmPrimitivRenderer.java src/org/openstreetmap/josm/gui/OsmPrimitivRenderer.java
index 48bfb5a..0a021c7 100644
--- src/org/openstreetmap/josm/gui/OsmPrimitivRenderer.java
+++ src/org/openstreetmap/josm/gui/OsmPrimitivRenderer.java
@@ -2,6 +2,7 @@
 package org.openstreetmap.josm.gui;
 
 import java.awt.Component;
+import java.awt.Rectangle;
 
 import javax.swing.DefaultListCellRenderer;
 import javax.swing.ImageIcon;
@@ -72,7 +73,9 @@ public class OsmPrimitivRenderer implements ListCellRenderer<OsmPrimitive>, Tabl
     private Component renderer(Component def, OsmPrimitive value) {
         if (value != null && def instanceof JLabel) {
             ((JLabel) def).setText(getComponentText(value));
-            ImageIcon icon = ImageProvider.get(value.getDisplayType());
+            ImageIcon icon = ImageProvider.getPadded(value,
+                // Height of component no yet known, assume the default 16px.
+                new Rectangle(16, 16));
             if (icon != null) {
                 ((JLabel) def).setIcon(icon);
             } else {
diff --git src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableMemberCellRenderer.java src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableMemberCellRenderer.java
index 6f24fcd..4be80d0 100644
--- src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableMemberCellRenderer.java
+++ src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableMemberCellRenderer.java
@@ -2,6 +2,7 @@
 package org.openstreetmap.josm.gui.dialogs.relation;
 
 import java.awt.Component;
+import java.awt.Rectangle;
 
 import javax.swing.JTable;
 
@@ -9,14 +10,18 @@ import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.tools.ImageProvider;
 
+/**
+ * "Refers to" column in relation editor's member list.
+ */
 public class MemberTableMemberCellRenderer extends MemberTableCellRenderer {
 
     public MemberTableMemberCellRenderer() {
         super();
     }
 
-    protected void renderPrimitive(OsmPrimitive primitive) {
-        setIcon(ImageProvider.get(primitive.getDisplayType()));
+    protected void renderPrimitive(OsmPrimitive primitive, Rectangle cellSize) {
+        // Make icon the full height of the table cell. Icon background is square.
+        setIcon(ImageProvider.getPadded(primitive, cellSize));
         setText(primitive.getDisplayName(DefaultNameFormatter.getInstance()));
         setToolTipText(DefaultNameFormatter.getInstance().buildDefaultToolTip(primitive));
     }
@@ -29,10 +34,12 @@ public class MemberTableMemberCellRenderer extends MemberTableCellRenderer {
         if (value == null)
             return this;
 
+        Rectangle cellSize = table.getCellRect(row, column, false);
+
         renderForeground(isSelected);
         OsmPrimitive primitive = (OsmPrimitive) value;
         renderBackground(getModel(table), primitive, isSelected);
-        renderPrimitive(primitive);
+        renderPrimitive(primitive, cellSize);
         return this;
     }
 }
diff --git src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableCellRenderer.java src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableCellRenderer.java
index a336c33..d0aa431 100644
--- src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableCellRenderer.java
+++ src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableCellRenderer.java
@@ -3,6 +3,7 @@ package org.openstreetmap.josm.gui.dialogs.relation;
 
 import java.awt.Color;
 import java.awt.Component;
+import java.awt.Rectangle;
 
 import javax.swing.JLabel;
 import javax.swing.JTable;
@@ -57,8 +58,8 @@ public class SelectionTableCellRenderer extends JLabel implements TableCellRende
         setBackground(bgc);
     }
 
-    protected void renderPrimitive(OsmPrimitive primitive) {
-        setIcon(ImageProvider.get(primitive.getDisplayType()));
+    protected void renderPrimitive(OsmPrimitive primitive, Rectangle cellSize) {
+        setIcon(ImageProvider.getPadded(primitive, cellSize));
         setText(primitive.getDisplayName(DefaultNameFormatter.getInstance()));
         setToolTipText(DefaultNameFormatter.getInstance().buildDefaultToolTip(primitive));
     }
@@ -71,8 +72,10 @@ public class SelectionTableCellRenderer extends JLabel implements TableCellRende
         if (value == null)
             return this;
 
+        Rectangle cellSize = table.getCellRect(row, column, false);
+
         renderBackground((OsmPrimitive) value);
-        renderPrimitive((OsmPrimitive) value);
+        renderPrimitive((OsmPrimitive) value, cellSize);
         return this;
     }
 
diff --git src/org/openstreetmap/josm/tools/ImageProvider.java src/org/openstreetmap/josm/tools/ImageProvider.java
index 66d0d6c..f968798 100644
--- src/org/openstreetmap/josm/tools/ImageProvider.java
+++ src/org/openstreetmap/josm/tools/ImageProvider.java
@@ -11,6 +11,7 @@ import java.awt.Graphics2D;
 import java.awt.GraphicsEnvironment;
 import java.awt.Image;
 import java.awt.Point;
+import java.awt.Rectangle;
 import java.awt.RenderingHints;
 import java.awt.Toolkit;
 import java.awt.Transparency;
@@ -55,7 +56,14 @@ import javax.swing.ImageIcon;
 import javax.xml.bind.DatatypeConverter;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
+import org.openstreetmap.josm.gui.mappaint.ElemStyle;
+import org.openstreetmap.josm.gui.mappaint.MapImage;
+import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
+import org.openstreetmap.josm.gui.mappaint.NodeElemStyle;
+import org.openstreetmap.josm.gui.mappaint.Range;
+import org.openstreetmap.josm.gui.mappaint.StyleCache.StyleList;
 import org.openstreetmap.josm.io.CachedFile;
 import org.openstreetmap.josm.plugins.PluginHandler;
 import org.w3c.dom.Element;
@@ -1268,6 +1276,56 @@ public class ImageProvider {
     }
 
     /**
+     * @param primitive Object for which an icon shall be fetched. The icon is chosen based on tags.
+     * @param iconSize Target size of icon. Icon is padded if required.
+     * @return Icon for {@code primitive} that fits in cell.
+     */
+    public static ImageIcon getPadded(OsmPrimitive primitive, Rectangle iconSize) {
+        // Check if the current styles have special icon for tagged nodes.
+        if (primitive instanceof org.openstreetmap.josm.data.osm.Node) {
+            Pair<StyleList, Range> nodeStyles = MapPaintStyles.getStyles().generateStyles(primitive, 100, false);
+            for (ElemStyle style : nodeStyles.a) {
+                if (style instanceof NodeElemStyle) {
+                    NodeElemStyle nodeStyle = (NodeElemStyle) style;
+                    MapImage icon = nodeStyle.mapImage;
+                    if (icon != null) {
+                        int backgroundWidth = iconSize.height;
+                        int backgroundHeight = iconSize.height;
+                        int iconWidth = icon.getWidth();
+                        int iconHeight = icon.getHeight();
+                        BufferedImage image = new BufferedImage(backgroundWidth, backgroundHeight,
+                                BufferedImage.TYPE_INT_ARGB);
+                        double scaleFactor = Math.min(backgroundWidth / (double) iconWidth, backgroundHeight
+                                / (double) iconHeight);
+                        BufferedImage iconImage = icon.getImage(false);
+                        Image scaledIcon;
+                        final int scaledWidth;
+                        final int scaledHeight;
+                        if (scaleFactor < 1) {
+                            // Scale icon such that it fits on background.
+                            scaledWidth = (int) (iconWidth * scaleFactor);
+                            scaledHeight = (int) (iconHeight * scaleFactor);
+                            scaledIcon = iconImage.getScaledInstance(scaledWidth, scaledHeight, Image.SCALE_SMOOTH);
+                        } else {
+                            // Use original size, don't upscale.
+                            scaledWidth = iconWidth;
+                            scaledHeight = iconHeight;
+                            scaledIcon = iconImage;
+                        }
+                        image.getGraphics().drawImage(scaledIcon, (backgroundWidth - scaledWidth) / 2,
+                                (backgroundHeight - scaledHeight) / 2, null);
+
+                        return new ImageIcon(image);
+                    }
+                }
+            }
+        }
+
+        // Use generic default icon.
+        return ImageProvider.get(primitive.getDisplayType());
+    }
+
+    /**
      * Constructs an image from the given SVG data.
      * @param svg the SVG data
      * @param dim the desired image dimension
