diff --git a/__tests__/integration/mirador/embedding.html b/__tests__/integration/mirador/embedding.html
new file mode 100644
index 0000000000000000000000000000000000000000..e37a484d7c0a8f443c89f9dfe573e07ef8e2c978
--- /dev/null
+++ b/__tests__/integration/mirador/embedding.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+    <meta name="theme-color" content="#000000">
+    <style type="text/css">
+     html, body {
+       height: 100%;
+       width: 100%;
+     }
+     #instanceOne {
+       width: 100%;
+       height: 50%;
+     }
+     #instanceTwo {
+       margin: 0 auto;
+       width: 800px;
+       height: 600px;
+     }
+    </style>
+    <title>Mirador</title>
+  </head>
+  <body>
+    <h1>This is the first instance</h1>
+    <div id="instanceOne"></div>
+    <h1>And this is the second instance</h1>
+    <div id="instanceTwo"></div>
+    <script>document.write("<script type='text/javascript' src='../../../dist/mirador.min.js?v=" + Date.now() + "'><\/script>");</script>
+    <script type="text/javascript">
+     var miradorInstanceOne = Mirador.viewer({
+       id: 'instanceOne',
+       windows: [{
+         loadedManifest: 'https://iiif.harvardartmuseums.org/manifests/object/299843',
+         canvasIndex: 2,
+       },
+       {
+         loadedManifest: 'https://media.nga.gov/public/manifests/nga_highlights.json',
+         thumbnailNavigationPosition: 'off',
+       }]
+     });
+     var miradorInstanceTwo = Mirador.viewer({
+       id: 'instanceTwo',
+       windows: [{
+         loadedManifest: 'https://iiif.harvardartmuseums.org/manifests/object/299843',
+         canvasIndex: 2,
+       },
+       {
+         loadedManifest: 'https://media.nga.gov/public/manifests/nga_highlights.json',
+         thumbnailNavigationPosition: 'off',
+       }]
+     });
+    </script>
+  </body>
+</html>
diff --git a/__tests__/integration/mirador/index.html b/__tests__/integration/mirador/index.html
index e088e95e99ebca0c7f5d39507bb6d156ad23ae8d..0d1d65e24fa85abd8f7eb23399e921b323f83fa8 100644
--- a/__tests__/integration/mirador/index.html
+++ b/__tests__/integration/mirador/index.html
@@ -7,7 +7,7 @@
     <title>Mirador</title>
   </head>
   <body>
-    <div id="mirador"></div>
+    <div id="mirador" style="position: absolute; top: 0; bottom: 0; left: 0; right: 0;"></div>
     <script>document.write("<script type='text/javascript' src='../../../dist/mirador.min.js?v=" + Date.now() + "'><\/script>");</script>
     <script type="text/javascript">
      var miradorInstance = Mirador.viewer({
diff --git a/__tests__/integration/mirador/plugins.html b/__tests__/integration/mirador/plugins.html
index df5ddbd9e3efdc624bc4ef0b3d171260eb14e788..3310af53b64fd24c985824bdd26fede98097c0c0 100644
--- a/__tests__/integration/mirador/plugins.html
+++ b/__tests__/integration/mirador/plugins.html
@@ -7,7 +7,7 @@
     <title>Mirador</title>
   </head>
   <body>
-    <div id="mirador"></div>
+    <div id="mirador" style="position: absolute; top: 0; bottom: 0; left: 0; right: 0;"></div>
     <script src="../../../node_modules/react/umd/react.development.js"></script>
     <!-- Request from CDN if unavailable locally -->
     <script type="text/javascript">
diff --git a/src/lib/MiradorViewer.js b/src/lib/MiradorViewer.js
index 55d1635909ef2dca5450fc0ddb2b33e0dd71759b..2fd7d8b5558780c8d4e97db1ac81ed04bfd8870f 100644
--- a/src/lib/MiradorViewer.js
+++ b/src/lib/MiradorViewer.js
@@ -10,7 +10,6 @@ import * as actions from '../state/actions';
 import settings from '../config/settings';
 import i18n from '../i18n';
 
-const store = createStore();
 /**
  * Default Mirador instantiation
  */
@@ -18,16 +17,17 @@ class MiradorViewer {
   /**
    */
   constructor(config) {
+    this.store = createStore();
     this.config = config;
     this.processPlugins();
     this.processConfig();
     const viewer = {
       actions,
-      store,
+      store: this.store,
     };
 
     ReactDOM.render(
-      <Provider store={store}>
+      <Provider store={this.store}>
         <I18nextProvider i18n={i18n}>
           <App config={config} />
         </I18nextProvider>
@@ -44,7 +44,7 @@ class MiradorViewer {
   processConfig() {
     const mergedConfig = deepmerge(settings, this.config);
     const action = actions.setConfig(mergedConfig);
-    store.dispatch(action);
+    this.store.dispatch(action);
 
     mergedConfig.windows.forEach((miradorWindow) => {
       let thumbnailNavigationPosition;
@@ -53,8 +53,8 @@ class MiradorViewer {
       } else {
         thumbnailNavigationPosition = mergedConfig.thumbnailNavigation.defaultPosition;
       }
-      store.dispatch(actions.fetchManifest(miradorWindow.loadedManifest));
-      store.dispatch(actions.addWindow({
+      this.store.dispatch(actions.fetchManifest(miradorWindow.loadedManifest));
+      this.store.dispatch(actions.addWindow({
         canvasIndex: (miradorWindow.canvasIndex || 0),
         manifestId: miradorWindow.loadedManifest,
         thumbnailNavigationPosition,
@@ -92,8 +92,8 @@ class MiradorViewer {
     });
 
     actionCreators.forEach((action) => { actions[action.name] = action.action; });
-    reducers.forEach((reducer) => { store.pluginReducers[reducer.name] = reducer.reducer; });
-    store.replaceReducer(createRootReducer(store.pluginReducers));
+    reducers.forEach((reducer) => { this.store.pluginReducers[reducer.name] = reducer.reducer; });
+    this.store.replaceReducer(createRootReducer(this.store.pluginReducers));
   }
 }
 
diff --git a/src/styles/index.scss b/src/styles/index.scss
index c7932e0ad740fb41574ea3cab8fa01bfc4cff5ba..cd70bf40fbe52aaf9a456390c4b401f20eb323b2 100644
--- a/src/styles/index.scss
+++ b/src/styles/index.scss
@@ -1,6 +1,12 @@
 @import 'variables';
 
 .mirador {
+  &-app {
+    height: 100%;
+    position: relative;
+    width: 100%;
+  }
+
   &-workspace {
     bottom: 0;
     box-sizing: border-box;