Index: /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/MemoryTileCache.java
===================================================================
--- /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/MemoryTileCache.java	(revision 31610)
+++ /applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/MemoryTileCache.java	(revision 31611)
@@ -52,8 +52,10 @@
     public synchronized void addTile(Tile tile) {
         CacheEntry entry = createCacheEntry(tile);
-        hash.put(tile.getKey(), entry);
-        lruTiles.addFirst(entry);
-        if (hash.size() > cacheSize || lruTiles.getElementCount() > cacheSize) {
-            removeOldEntries();
+        if (hash.put(tile.getKey(), entry) == null) {
+            // only if hash hadn't had the element, add it to LRU
+            lruTiles.addFirst(entry);
+            if (hash.size() > cacheSize || lruTiles.getElementCount() > cacheSize) {
+                removeOldEntries();
+            }
         }
     }
