diff --git a/src/containers/load-button.jsx b/src/containers/load-button.jsx
index a7b78a638dcf87871ced71752a668beebe153f87..e5ec3915421aa01e828c06ec7cb1c5650d1a07a1 100644
--- a/src/containers/load-button.jsx
+++ b/src/containers/load-button.jsx
@@ -2,6 +2,7 @@ import bindAll from 'lodash.bindall';
 import PropTypes from 'prop-types';
 import React from 'react';
 import {connect} from 'react-redux';
+import JSZip from 'jszip';
 
 import LoadButtonComponent from '../components/load-button/load-button.jsx';
 
@@ -16,8 +17,11 @@ class LoadButton extends React.Component {
     }
     handleChange (e) {
         const reader = new FileReader();
-        reader.onload = () => this.props.loadProject(reader.result);
-        reader.readAsText(e.target.files[0]);
+        reader.onload = () => {
+            JSZip.loadAsync(reader.result)
+                .then(zip => this.props.loadProject(zip));
+        };
+        reader.readAsArrayBuffer(e.target.files[0]);
     }
     handleClick () {
         this.fileInput.click();
@@ -46,7 +50,7 @@ LoadButton.propTypes = {
 };
 
 const mapStateToProps = state => ({
-    loadProject: state.vm.fromJSON.bind(state.vm)
+    loadProject: state.vm.loadProjectLocal.bind(state.vm)
 });
 
 export default connect(