diff --git a/.travis.yml b/.travis.yml
index c20410a3f3c59002144bc94e9e8a7e0e708cf63c..f51de2590614b70dbcaf091b423a17c334cf0daf 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -25,6 +25,7 @@ before_deploy:
   if [ -z "$BEFORE_DEPLOY_RAN" ]; then
     npm --no-git-tag-version version $RELEASE_VERSION
     if [ "$TRAVIS_BRANCH" == "master" ]; then export NPM_TAG=stable; fi
+    if [[ "$TRAVIS_BRANCH" == hotfix/* ]]; then export NPM_TAG=hotfix; fi # double brackets are important for matching the wildcard
     git config --global user.email $(git log --pretty=format:"%ae" -n1)
     git config --global user.name $(git log --pretty=format:"%an" -n1)
     export BEFORE_DEPLOY_RAN=true
@@ -36,6 +37,7 @@ deploy:
     - master
     - develop
     - smoke
+    - hotfix/*
     condition: $TRAVIS_EVENT_TYPE != cron
   skip_cleanup: true
   email: $NPM_EMAIL
diff --git a/src/containers/backpack.jsx b/src/containers/backpack.jsx
index 1a22a185e956db246d371aa8e1a10eb5ca883e6c..b4f33ab43a1eae95ac082767b79fe801f5ee970f 100644
--- a/src/containers/backpack.jsx
+++ b/src/containers/backpack.jsx
@@ -83,12 +83,15 @@ class Backpack extends React.Component {
     }
     handleDrop (dragInfo) {
         let payloader = null;
+        let presaveAsset = null;
         switch (dragInfo.dragType) {
         case DragConstants.COSTUME:
             payloader = costumePayload;
+            presaveAsset = dragInfo.payload.asset;
             break;
         case DragConstants.SOUND:
             payloader = soundPayload;
+            presaveAsset = dragInfo.payload.asset;
             break;
         case DragConstants.SPRITE:
             payloader = spritePayload;
@@ -102,6 +105,19 @@ class Backpack extends React.Component {
         // Creating the payload is async, so set loading before starting
         this.setState({loading: true}, () => {
             payloader(dragInfo.payload, this.props.vm)
+                .then(payload => {
+                    // Force the asset to save to the asset server before storing in backpack
+                    // Ensures any asset present in the backpack is also on the asset server
+                    if (presaveAsset && !presaveAsset.clean) {
+                        return storage.store(
+                            presaveAsset.assetType,
+                            presaveAsset.dataFormat,
+                            presaveAsset.data,
+                            presaveAsset.assetId
+                        ).then(() => payload);
+                    }
+                    return payload;
+                })
                 .then(payload => saveBackpackObject({
                     host: this.props.host,
                     token: this.props.token,