diff --git a/src/components/WorkspaceElastic.js b/src/components/WorkspaceElastic.js
index 65de11c19693ac3567cfcba6aaed850c3d346357..896c3c4fcbf4d328d4b48d47d71ca7555daf9154 100644
--- a/src/components/WorkspaceElastic.js
+++ b/src/components/WorkspaceElastic.js
@@ -15,11 +15,13 @@ class WorkspaceElastic extends React.Component {
   render() {
     const {
       workspace,
+      boundingBox,
       windows,
       setWorkspaceViewportPosition,
       updateWindowPosition,
       setWindowSize,
     } = this.props;
+    console.log(boundingBox);
     return (
       <Rnd
         default={{
@@ -77,6 +79,7 @@ WorkspaceElastic.propTypes = {
   setWorkspaceViewportPosition: PropTypes.func.isRequired,
   windows: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types
   workspace: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types
+  boundingBox: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types
   updateWindowPosition: PropTypes.func.isRequired,
   setWindowSize: PropTypes.func.isRequired,
 };
diff --git a/src/config/settings.js b/src/config/settings.js
index f3d393155de47763e31f0ef4ca36f4077ec1eeae..deae277aebc6aefe648d2cbf3817585e7161c47e 100644
--- a/src/config/settings.js
+++ b/src/config/settings.js
@@ -18,7 +18,7 @@ export default {
     height: 150,
   },
   workspace: {
-    type: 'freeform',
+    type: 'elastic',
   },
   workspaceControlPanel: {
     enabled: true,
diff --git a/src/containers/WorkspaceElastic.js b/src/containers/WorkspaceElastic.js
index 8c0b8d714bb1d69c700178fd79aefac3612b1288..877673db860bfaf3a9069c9b0d08ea209a8a4868 100644
--- a/src/containers/WorkspaceElastic.js
+++ b/src/containers/WorkspaceElastic.js
@@ -1,6 +1,7 @@
 import { compose } from 'redux';
 import { connect } from 'react-redux';
 import * as actions from '../state/actions';
+import { getWorkspaceBoundingBox } from '../state/selectors';
 import WorkspaceElastic from '../components/WorkspaceElastic';
 
 /**
@@ -10,6 +11,7 @@ import WorkspaceElastic from '../components/WorkspaceElastic';
  */
 const mapStateToProps = state => (
   {
+    boundingBox: getWorkspaceBoundingBox(state.windows),
     workspace: state.workspace,
     windows: state.windows,
   }
diff --git a/src/state/reducers/workspace.js b/src/state/reducers/workspace.js
index b98216833751923414476b3b46910b1db2c34b19..6abaeb93abc2395bb2cf99343aa8cdaf5b67a3c2 100644
--- a/src/state/reducers/workspace.js
+++ b/src/state/reducers/workspace.js
@@ -9,7 +9,7 @@ export const workspaceReducer = (
       x: -2500,
       y: -2500,
     },
-    exposedModeOn: false,
+    exposeModeOn: false,
   },
   action,
 ) => {
@@ -27,7 +27,7 @@ export const workspaceReducer = (
     case ActionTypes.SET_WORKSPACE_VIEWPORT_POSITION:
       return { ...state, viewportPosition: action.payload.position };
     case ActionTypes.TOGGLE_WORKSPACE_EXPOSE_MODE:
-      return { ...state, exposeModeOn: !state.exposedModeOn };
+      return { ...state, exposeModeOn: !state.exposeModeOn };
     default:
       return state;
   }
diff --git a/src/state/selectors/index.js b/src/state/selectors/index.js
index 69a9c36462fc40e1fd04dcc09df0b1b822d00801..04c33d17c9f6cdf256feb8839ef37d76d58f9c8f 100644
--- a/src/state/selectors/index.js
+++ b/src/state/selectors/index.js
@@ -189,3 +189,23 @@ export function getCompanionWindowForPosition(state, windowId, position) {
     && state.windows[windowId].companionWindows
     && state.windows[windowId].companionWindows[position];
 }
+
+/**
+ * Return the bounding box for all open windows in the elastic workspace
+ * in workspace coordinates
+ * @param {object} state
+ * @return {object}
+ */
+export function getWorkspaceBoundingBox(windows) {
+  const windowObjects = Object.values(windows);
+  const minX = Math.min(...windowObjects.map(win => win.x));
+  const minY = Math.min(...windowObjects.map(win => win.y));
+  const maxX = Math.max(...windowObjects.map(win => win.x + win.width));
+  const maxY = Math.max(...windowObjects.map(win => win.y + win.height));
+  return {
+    x: minX,
+    y: minY,
+    width: maxX - minX,
+    height: maxY - minY,
+  };
+}
diff --git a/src/styles/index.scss b/src/styles/index.scss
index d681f4e047de5f05f2a8b1ad79dfdd3beea1ea61..6103d91c8f84c6a48e5d8efc10a993a51681f203 100644
--- a/src/styles/index.scss
+++ b/src/styles/index.scss
@@ -7,6 +7,7 @@
     right: 0;
     bottom: 0;
     left: 0;
+    overflow: hidden;
   }
 
   &-workspace-viewport {