diff --git a/package.json b/package.json
index e80b880a03cea23c56c8af788f5dc2b86c98d5dd..fb0f8d8b0659990090f67e6e9947575da9a39880 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
     "autoprefixer": "7.1.2",
     "babel-cli": "6.24.1",
     "babel-core": "^6.23.1",
-    "babel-eslint": "^7.1.1",
+    "babel-eslint": "^7.2.3",
     "babel-loader": "^7.1.0",
     "babel-plugin-react-intl": "2.3.1",
     "babel-plugin-syntax-dynamic-import": "6.18.0",
@@ -44,11 +44,10 @@
     "copy-webpack-plugin": "4.0.1",
     "css-loader": "0.28.3",
     "enzyme": "^2.8.2",
-    "eslint": "^3.16.1",
-    "eslint-config-import": "^0.13.0",
-    "eslint-config-scratch": "^3.0.0",
+    "eslint": "^4.4.1",
+    "eslint-config-scratch": "^4.0.0",
     "eslint-plugin-import": "^2.7.0",
-    "eslint-plugin-react": "^7.0.1",
+    "eslint-plugin-react": "^7.2.1",
     "get-float-time-domain-data": "0.1.0",
     "gh-pages": "github:rschamp/gh-pages#publish-branch-to-subfolder",
     "html-webpack-plugin": "2.30.0",
diff --git a/src/.eslintrc.js b/src/.eslintrc.js
index e558dde263eb1f6970b0abcbf62e9f28ab655580..ff88f0f27fa8ea14df758aed45b27ba9460806d5 100644
--- a/src/.eslintrc.js
+++ b/src/.eslintrc.js
@@ -1,6 +1,6 @@
 module.exports = {
     root: true,
-    extends: ['scratch', 'scratch/es6', 'scratch/react', 'import'],
+    extends: ['scratch', 'scratch/es6', 'scratch/react', 'plugin:import/errors'],
     env: {
         browser: true
     },
diff --git a/src/components/costume-canvas/costume-canvas.jsx b/src/components/costume-canvas/costume-canvas.jsx
index eafe92930f7eaf5f4dbfcd246b93ef7d6796bb25..a142e8d27e642fbd4225d2e8f7a87ab6cf1ab34f 100644
--- a/src/components/costume-canvas/costume-canvas.jsx
+++ b/src/components/costume-canvas/costume-canvas.jsx
@@ -21,7 +21,7 @@ class CostumeCanvas extends React.Component {
             prevProps.width !== this.props.width ||
             prevProps.height !== this.props.height ||
             prevProps.direction !== this.props.direction
-          ) {
+        ) {
             this.draw();
         }
     }
diff --git a/src/components/sprite-selector-item/sprite-selector-item.jsx b/src/components/sprite-selector-item/sprite-selector-item.jsx
index 37e80217126cd251f3e1b09ca6987659f9cdae71..2db6a7feacdb0b0b04babe8e07aa7bea9ecb2990 100644
--- a/src/components/sprite-selector-item/sprite-selector-item.jsx
+++ b/src/components/sprite-selector-item/sprite-selector-item.jsx
@@ -28,7 +28,7 @@ const SpriteSelectorItem = props => (
                 size={CloseButton.SIZE_SMALL}
                 onClick={props.onDeleteButtonClick}
             />
-            ) : null }
+        ) : null }
         {props.costumeURL ? (
             <CostumeCanvas
                 className={styles.spriteImage}
@@ -36,7 +36,7 @@ const SpriteSelectorItem = props => (
                 url={props.costumeURL}
                 width={32}
             />
-            ) : null}
+        ) : null}
         <div className={styles.spriteName}>{props.name}</div>
         <ContextMenu id={`${props.name}-${contextMenuId++}`}>
             <MenuItem onClick={props.onDeleteButtonClick}>
diff --git a/src/containers/sound-library.jsx b/src/containers/sound-library.jsx
index fb98c070ccd616cfe0b88f46c8ee9a5e6e6e24c9..8fe3f97bd093365182507796afb5dc2a67f7445c 100644
--- a/src/containers/sound-library.jsx
+++ b/src/containers/sound-library.jsx
@@ -31,18 +31,19 @@ class SoundLibrary extends React.PureComponent {
         const idParts = md5ext.split('.');
         const md5 = idParts[0];
         const vm = this.props.vm;
-        vm.runtime.storage.load(vm.runtime.storage.AssetType.Sound, md5).then(soundAsset => {
-            const sound = {
-                md5: md5ext,
-                name: soundItem.name,
-                format: soundItem.format,
-                data: soundAsset.data
-            };
-            return this.audioEngine.decodeSound(sound);
-        })
-        .then(soundId => {
-            this.player.playSound(soundId);
-        });
+        vm.runtime.storage.load(vm.runtime.storage.AssetType.Sound, md5)
+            .then(soundAsset => {
+                const sound = {
+                    md5: md5ext,
+                    name: soundItem.name,
+                    format: soundItem.format,
+                    data: soundAsset.data
+                };
+                return this.audioEngine.decodeSound(sound);
+            })
+            .then(soundId => {
+                this.player.playSound(soundId);
+            });
     }
     handleItemMouseLeave () {
         this.player.stopAllSounds();