diff --git a/__tests__/src/selectors/index.test.js b/__tests__/src/selectors/index.test.js
index 41f0400122f8ca32667f2f7c4541ee74005c5fa1..cd61d8a72deb2ac4dc4e45dfa747d996e0bfa2d1 100644
--- a/__tests__/src/selectors/index.test.js
+++ b/__tests__/src/selectors/index.test.js
@@ -36,17 +36,17 @@ describe('getThumbnailNavigationPosition', () => {
   };
 
   it('should return thumbnail navigation position if window exists', () => {
-    const received = getThumbnailNavigationPosition(state, 'a');
+    const received = getThumbnailNavigationPosition(state, { windowId: 'a' });
     expect(received).toBe('bottom');
   });
 
   it('should return undefined if position does not exist in window', () => {
-    const received = getThumbnailNavigationPosition(state, 'b');
+    const received = getThumbnailNavigationPosition(state, { windowId: 'b' });
     expect(received).toBeUndefined();
   });
 
   it('should return undefined if window does not exists', () => {
-    const received = getThumbnailNavigationPosition(state, 'c');
+    const received = getThumbnailNavigationPosition(state, { windowId: 'c' });
     expect(received).toBeUndefined();
   });
 });
diff --git a/src/containers/Window.js b/src/containers/Window.js
index 318daa9b52ad7530f2deaf5c4de2e0d4b31efc34..2bdfa90e2efd6bec46fd4ec38207ad7db1f1a82e 100644
--- a/src/containers/Window.js
+++ b/src/containers/Window.js
@@ -18,7 +18,7 @@ const mapStateToProps = (state, props) => ({
   window: state.windows[props.window.id],
   workspaceType: state.config.workspace.type,
   label: getManifestTitle(state, { windowId: props.window.id }),
-  thumbnailNavigationPosition: getThumbnailNavigationPosition(state, props.window.id),
+  thumbnailNavigationPosition: getThumbnailNavigationPosition(state, { windowId: props.window.id }),
 });
 
 /**
diff --git a/src/containers/WindowThumbnailSettings.js b/src/containers/WindowThumbnailSettings.js
index 0fa87898f2c0b6877f70e50b777f4d3bbb6ee5e5..86ece45e61d629e6425997f314c2816905220ea2 100644
--- a/src/containers/WindowThumbnailSettings.js
+++ b/src/containers/WindowThumbnailSettings.js
@@ -19,9 +19,9 @@ const mapDispatchToProps = { setWindowThumbnailPosition: actions.setWindowThumbn
  * @memberof WindowViewer
  * @private
  */
-const mapStateToProps = (state, props) => (
+const mapStateToProps = (state, { windowId }) => (
   {
-    thumbnailNavigationPosition: getThumbnailNavigationPosition(state, props.windowId),
+    thumbnailNavigationPosition: getThumbnailNavigationPosition(state, { windowId }),
   }
 );
 
diff --git a/src/state/selectors/index.js b/src/state/selectors/index.js
index 98e2ddb4169d23db1883abc858c7bc0b6a83e513..44e3f7fc1743b7248d9df40cdb734ec8f1bef497 100644
--- a/src/state/selectors/index.js
+++ b/src/state/selectors/index.js
@@ -77,22 +77,25 @@ export function getIdAndContentOfResources(resources) {
   }));
 }
 
+/** */
+function getWindow(state, { windowId }) {
+  return state.windows && state.windows[windowId];
+}
+
 /** Return position of thumbnail navigation in a certain window.
 * @param {object} state
 * @param {String} windowId
 * @param {String}
 */
-export function getThumbnailNavigationPosition(state, windowId) {
-  return state.windows[windowId]
-    && state.windows[windowId].thumbnailNavigationId
-    && state.companionWindows[state.windows[windowId].thumbnailNavigationId]
-    && state.companionWindows[state.windows[windowId].thumbnailNavigationId].position;
-}
-
-/** */
-function getWindow(state, { windowId }) {
-  return state.windows && state.windows[windowId];
-}
+export const getThumbnailNavigationPosition = createSelector(
+  [
+    getWindow,
+    state => state.companionWindows,
+  ],
+  (window, companionWindows) => window
+    && companionWindows[window.thumbnailNavigationId]
+    && companionWindows[window.thumbnailNavigationId].position,
+);
 
 /** Return type of view in a certain window.
 * @param {object} state