Index: trunk/src/org/openstreetmap/josm/gui/OsmPrimitivRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/OsmPrimitivRenderer.java	(revision 8902)
+++ trunk/src/org/openstreetmap/josm/gui/OsmPrimitivRenderer.java	(revision 8903)
@@ -3,4 +3,5 @@
 
 import java.awt.Component;
+import java.awt.Rectangle;
 
 import javax.swing.DefaultListCellRenderer;
@@ -67,5 +68,5 @@
      * provided that it's a kind of JLabel.
      * @param def the rendering component
-     * @param value the OsmPrimtive to render
+     * @param value the OsmPrimitive to render
      * @return the modified rendering component
      */
@@ -73,5 +74,7 @@
         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);
@@ -88,5 +91,5 @@
      * provided that it's a kind of JLabel.
      * @param def the rendering component
-     * @param value the HistoryOsmPrimtive to render
+     * @param value the HistoryOsmPrimitive to render
      * @return the modified rendering component
      */
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableMemberCellRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableMemberCellRenderer.java	(revision 8902)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableMemberCellRenderer.java	(revision 8903)
@@ -3,4 +3,5 @@
 
 import java.awt.Component;
+import java.awt.Rectangle;
 
 import javax.swing.JTable;
@@ -10,12 +11,19 @@
 import org.openstreetmap.josm.tools.ImageProvider;
 
+/**
+ * "Refers to" column in relation editor's member list.
+ */
 public class MemberTableMemberCellRenderer extends MemberTableCellRenderer {
 
+	/**
+	 * Constructs a new {@code MemberTableMemberCellRenderer}.
+	 */
     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));
@@ -30,8 +38,10 @@
             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;
     }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableCellRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableCellRenderer.java	(revision 8902)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableCellRenderer.java	(revision 8903)
@@ -4,4 +4,5 @@
 import java.awt.Color;
 import java.awt.Component;
+import java.awt.Rectangle;
 
 import javax.swing.JLabel;
@@ -58,6 +59,6 @@
     }
 
-    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));
@@ -72,6 +73,8 @@
             return this;
 
+        Rectangle cellSize = table.getCellRect(row, column, false);
+
         renderBackground((OsmPrimitive) value);
-        renderPrimitive((OsmPrimitive) value);
+        renderPrimitive((OsmPrimitive) value, cellSize);
         return this;
     }
Index: trunk/src/org/openstreetmap/josm/tools/ImageProvider.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 8902)
+++ trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 8903)
@@ -12,4 +12,5 @@
 import java.awt.Image;
 import java.awt.Point;
+import java.awt.Rectangle;
 import java.awt.RenderingHints;
 import java.awt.Toolkit;
@@ -56,5 +57,12 @@
 
 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;
@@ -1266,4 +1274,55 @@
         CheckParameterUtil.ensureParameterNotNull(type, "type");
         return get("data", type.getAPIName());
+    }
+
+    /**
+     * @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.
+     * @since 8903
+     */
+    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());
     }
 
