diff --git a/src/components/OpenSeadragonViewer.js b/src/components/OpenSeadragonViewer.js
index 3709ab33b168ac179a9c375ab803db1fa3d09016..a707af25b8572abbb3e997e33b79bb7eb567d1eb 100644
--- a/src/components/OpenSeadragonViewer.js
+++ b/src/components/OpenSeadragonViewer.js
@@ -38,10 +38,14 @@ class OpenSeadragonViewer extends Component {
   }
 
   /**
+   * When the tileSources change, make sure to close the OSD viewer.
    */
-  componentDidUpdate() {
+  componentDidUpdate(prevProps) {
     const { tileSources } = this.props;
-    tileSources.forEach(tileSource => this.addTileSource(tileSource));
+    if (prevProps.tileSources !== tileSources) {
+      this.viewer.close();
+      tileSources.forEach(tileSource => this.addTileSource(tileSource));
+    }
   }
 
   /**