Index: trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowser.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowser.java	(revision 16692)
+++ trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowser.java	(revision 16694)
@@ -7,5 +7,4 @@
 import java.awt.Dimension;
 import java.util.Arrays;
-import java.util.Objects;
 
 import javax.swing.JPanel;
@@ -115,5 +114,5 @@
      */
     public void populate(History history) {
-        boolean samePrimitive = model.getHistory() != null && Objects.equals(model.getHistory().getPrimitiveId(), history.getPrimitiveId());
+        boolean samePrimitive = model.isSamePrimitive(history); // needs to be before setHistory
         model.setHistory(history);
         if (samePrimitive) {
Index: trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java	(revision 16692)
+++ trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java	(revision 16694)
@@ -5,4 +5,5 @@
 
 import java.util.HashSet;
+import java.util.Objects;
 import java.util.Set;
 
@@ -128,4 +129,8 @@
     }
 
+    boolean isSamePrimitive(History history) {
+        return getHistory() != null && Objects.equals(getHistory().getPrimitiveId(), history.getPrimitiveId());
+    }
+
     private boolean canShowAsLatest(OsmPrimitive primitive) {
         if (primitive == null)
@@ -164,6 +169,10 @@
      */
     public void setHistory(History history) {
+        boolean samePrimitive = isSamePrimitive(history); // needs to be before `this.history = history`
         this.history = history;
-        if (history.getNumVersions() > 0) {
+        if (samePrimitive && history.getNumVersions() > 0) {
+            reference = history.getByVersion(reference.getVersion());
+            current = history.getByVersion(current.getVersion());
+        } else if (history.getNumVersions() > 0) {
             HistoryOsmPrimitive newLatest = null;
             DataSet ds = MainApplication.getLayerManager().getActiveDataSet();
