Index: /trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java	(revision 17889)
+++ /trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java	(revision 17890)
@@ -4,4 +4,5 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.awt.Color;
 import java.util.HashSet;
 import java.util.Objects;
@@ -44,4 +45,5 @@
 import org.openstreetmap.josm.gui.util.ChangeNotifier;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.ColorScale;
 import org.openstreetmap.josm.tools.Logging;
 
@@ -89,4 +91,5 @@
     private final DiffTableModel referenceNodeListTableModel;
     private final DiffTableModel currentNodeListTableModel;
+    private final ColorScale dateScale;
 
     /**
@@ -101,4 +104,5 @@
         currentRelationMemberTableModel = new DiffTableModel();
         referenceRelationMemberTableModel = new DiffTableModel();
+        dateScale = ColorScale.createHSBScale(256);
 
         DataSet ds = MainApplication.getLayerManager().getActiveDataSet();
@@ -193,4 +197,9 @@
             setLatest(newLatest);
         }
+        if (!history.isEmpty()) {
+            this.dateScale.setRange(
+                    history.getEarliest().getInstant().toEpochMilli(),
+                    history.getLatest().getInstant().toEpochMilli());
+        }
         initTagTableModels();
         fireModelChange();
@@ -689,3 +698,21 @@
     }
 
+    /**
+     * Returns the color for the primitive in the given row
+     * @param row row number
+     * @return the color for the primitive in the given row
+     */
+    public Color getVersionColor(int row) {
+        HistoryOsmPrimitive primitive = getPrimitive(row);
+        return primitive != null && primitive.getInstant() != null ? getVersionColor(primitive) : null;
+    }
+
+    /**
+     * Returns the color for the given primitive timestamp
+     * @param primitive the history primitive
+     * @return the color for the given primitive timestamp
+     */
+    public Color getVersionColor(HistoryOsmPrimitive primitive) {
+        return dateScale.getColor(primitive.getInstant().toEpochMilli());
+    }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/history/TagTableCellRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/history/TagTableCellRenderer.java	(revision 17889)
+++ /trunk/src/org/openstreetmap/josm/gui/history/TagTableCellRenderer.java	(revision 17890)
@@ -5,4 +5,5 @@
 import java.awt.Component;
 
+import javax.swing.BorderFactory;
 import javax.swing.JLabel;
 import javax.swing.JTable;
@@ -48,4 +49,5 @@
         String text = "";
         String tooltip = null;
+        setBorder(null);
         if (model.hasTag(key)) {
             switch(column) {
@@ -63,4 +65,5 @@
                     text = "v" + primitive.getVersion();
                     tooltip = tr("Key ''{0}'' was changed in version {1}", key, primitive.getVersion());
+                    setBorder(BorderFactory.createMatteBorder(0, 0, 0, 2, model.getVersionColor(primitive)));
                 }
             default: // Do nothing
Index: /trunk/src/org/openstreetmap/josm/gui/history/TagTableModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/history/TagTableModel.java	(revision 17889)
+++ /trunk/src/org/openstreetmap/josm/gui/history/TagTableModel.java	(revision 17890)
@@ -2,4 +2,5 @@
 package org.openstreetmap.josm.gui.history;
 
+import java.awt.Color;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -96,4 +97,13 @@
 
     /**
+     * Returns the color for the given primitive timestamp
+     * @param primitive the history primitive
+     * @return the color for the given primitive timestamp
+     */
+    public Color getVersionColor(HistoryOsmPrimitive primitive) {
+        return model.getVersionColor(primitive);
+    }
+
+    /**
      * Determines if a tag exists in the opposite point in time for the given key.
      * @param key tag key
Index: /trunk/src/org/openstreetmap/josm/gui/history/VersionTableCellRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/history/VersionTableCellRenderer.java	(revision 17889)
+++ /trunk/src/org/openstreetmap/josm/gui/history/VersionTableCellRenderer.java	(revision 17890)
@@ -2,8 +2,10 @@
 package org.openstreetmap.josm.gui.history;
 
+import javax.swing.BorderFactory;
 import javax.swing.JLabel;
 import javax.swing.JTable;
 import javax.swing.SwingConstants;
 import javax.swing.table.TableCellRenderer;
+import java.awt.Color;
 import java.awt.Component;
 
@@ -28,4 +30,10 @@
         }
         setText(v);
+        Color color = ((VersionTableModel) table.getModel()).getVersionColor(row);
+        if (color != null) {
+            setBorder(BorderFactory.createMatteBorder(0, 2, 0, 0, color));
+        } else {
+            setBorder(null);
+        }
         return this;
     }
Index: /trunk/src/org/openstreetmap/josm/gui/history/VersionTableModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/history/VersionTableModel.java	(revision 17889)
+++ /trunk/src/org/openstreetmap/josm/gui/history/VersionTableModel.java	(revision 17890)
@@ -2,4 +2,5 @@
 package org.openstreetmap.josm.gui.history;
 
+import java.awt.Color;
 import java.time.format.FormatStyle;
 
@@ -78,4 +79,13 @@
     }
 
+    /**
+     * Returns the color for the primitive in the given row
+     * @param row row number
+     * @return the color for the primitive in the given row
+     */
+    public Color getVersionColor(int row) {
+        return model.getVersionColor(row);
+    }
+
     @Override
     public void setValueAt(Object aValue, int row, int column) {
Index: /trunk/test/unit/org/openstreetmap/josm/gui/history/HistoryBrowserModelTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/history/HistoryBrowserModelTest.java	(revision 17889)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/history/HistoryBrowserModelTest.java	(revision 17890)
@@ -20,4 +20,6 @@
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+import java.awt.Color;
 
 /**
@@ -172,4 +174,7 @@
         assertEquals(1, model.getRelationMemberTableModel(PointInTimeType.REFERENCE_POINT_IN_TIME).getRowCount());
         assertEquals(1, model.getRelationMemberTableModel(PointInTimeType.CURRENT_POINT_IN_TIME).getRowCount());
+        assertEquals(new Color(0xff0000), model.getVersionColor(0));
+        assertEquals(new Color(0xff00e5), model.getVersionColor(1));
+        assertNull(model.getVersionColor(2));
     }
 }
