diff --git a/gr-image-diff-tool/gr-image-diff-tool.html b/gr-image-diff-tool/gr-image-diff-tool.html
index 6f2d85e..55d1c46 100644
--- a/gr-image-diff-tool/gr-image-diff-tool.html
+++ b/gr-image-diff-tool/gr-image-diff-tool.html
@@ -48,7 +48,7 @@
 
     <div id="header">
       <h3>Image Diff</h3>
-      <select id="dropdown">
+      <select value="{{_observeMode::change}}" id="dropdown">
         <option value="resemble">Resemble Mode</option>
         <option value="opacity">Opacity Mode</option>
       </select>
diff --git a/gr-image-diff-tool/gr-image-diff-tool.js b/gr-image-diff-tool/gr-image-diff-tool.js
index 20a0ac9..95df491 100644
--- a/gr-image-diff-tool/gr-image-diff-tool.js
+++ b/gr-image-diff-tool/gr-image-diff-tool.js
@@ -14,29 +14,54 @@
 (function() {
   'use strict';
 
+  const DiffModes = {
+    OPACITY: 'opacity',
+    RESEMBLE: 'resemble',
+  };
+
   Polymer({
     is: 'gr-image-diff-tool',
 
     properties: {
-      _showResembleMode: {
-        type: Boolean,
-        value: true,
-      },
-      _showOpacityMode: {
-        type: Boolean,
-        value: false,
+      _showResembleMode: Boolean,
+      _showOpacityMode: Boolean,
+      _observeMode: {
+        type: String,
+        observer: '_handleSelect',
       },
     },
 
-    handleSelect() {
-      const mode = this.$.dropdown.value;
-      if (mode === 'resemble') {
-        this._showResembleMode = true;
-        this._showOpacityMode = false;
-      } else if (mode === 'opacity') {
-        this._showOpacityMode = true;
-        this._showResembleMode = false;
-      }
+    attached() {
+      const diff_mode = this._getMode();
+      diff_mode === DiffModes.OPACITY ?
+          this._displayOpacityMode() : this._displayResembleMode();
+    },
+
+    _getMode() {
+      return window.localStorage.getItem('image-diff-mode');
+    },
+
+    _setMode(mode) {
+      window.localStorage.setItem('image-diff-mode', mode);
+    },
+
+    _handleSelect(mode) {
+      mode === DiffModes.OPACITY ?
+          this._displayOpacityMode() : this._displayResembleMode();
+    },
+
+    _displayResembleMode() {
+      this._observeMode = DiffModes.RESEMBLE;
+      this._showResembleMode = true;
+      this._showOpacityMode = false;
+      this._setMode(DiffModes.RESEMBLE);
+    },
+
+    _displayOpacityMode() {
+      this._observeMode = DiffModes.OPACITY;
+      this._showResembleMode = false;
+      this._showOpacityMode = true;
+      this._setMode(DiffModes.OPACITY);
     },
   });
 })();
\ No newline at end of file
diff --git a/gr-image-diff-tool/gr-image-diff-tool_test.html b/gr-image-diff-tool/gr-image-diff-tool_test.html
index 0fe8a3e..ec1a4be 100644
--- a/gr-image-diff-tool/gr-image-diff-tool_test.html
+++ b/gr-image-diff-tool/gr-image-diff-tool_test.html
@@ -38,14 +38,17 @@
 <script>
   suite('gr-image-diff-tool tests', () => {
     let element;
+    let sandbox;
 
     setup(() => {
       element = fixture('basicFixture');
+      sandbox = sinon.sandbox.create();
     });
 
+    teardown(() => { sandbox.restore(); });
+
     test('test opacity mode', () => {
-      element.$.dropdown.value = 'opacity';
-      element.handleSelect();
+      element._observeMode = 'opacity';
       assert.isTrue(element._showOpacityMode);
       assert.isFalse(element._showResembleMode);
       flushAsynchronousOperations();
@@ -55,8 +58,7 @@
     });
 
     test('test resemble mode', () => {
-      element.$.dropdown.value = 'resemble';
-      element.handleSelect();
+      element._observeMode = 'resemble';
       assert.isTrue(element._showResembleMode);
       assert.isFalse(element._showOpacityMode);
       flushAsynchronousOperations();
@@ -64,5 +66,17 @@
       assert.ok(element.$$('gr-resemble-diff-mode'));
       assert.equal(element.$$('gr-opacity-diff-mode'), null);
     });
+
+    test('localStorage persists', () => {
+      sandbox.stub(element, '_setMode');
+      sandbox.stub(element, '_getMode');
+      element.attached();
+      assert.equal(element._getMode.callCount, 1);
+      assert.equal(element._setMode.callCount, 1);
+      element._observeMode = 'opacity';
+      assert.equal(element._setMode.callCount, 2);
+      element._observeMode = 'resemble';
+      assert.equal(element._setMode.callCount, 3);
+    });
   });
 </script>
\ No newline at end of file
