diff --git a/player/js/module_worker.js b/player/js/module_worker.js
index c711b99..0a0982f 100644
--- a/player/js/module_worker.js
+++ b/player/js/module_worker.js
@@ -1,10 +1,9 @@
-/* global defaultCurveSegments:writable, roundValues, lottie, animationManager */
-
-var lottiejs = (function () {
+/* global defaultCurveSegments:writable, roundValues, animationManager */
+var lottie = (function () {
   'use strict';
 
   /* <%= contents %> */
-  var lottiejsLibrary = {};
+  var lottiejs = {};
 
   function loadAnimation(params) {
     return animationManager.loadAnimation(params);
@@ -16,11 +15,11 @@
         case 'high':
           defaultCurveSegments = 200;
           break;
-        default:
         case 'medium':
           defaultCurveSegments = 50;
           break;
         case 'low':
+        default:
           defaultCurveSegments = 10;
           break;
       }
@@ -34,35 +33,35 @@
     }
   }
 
-  lottiejsLibrary.play = animationManager.play;
-  lottiejsLibrary.pause = animationManager.pause;
-  lottiejsLibrary.togglePause = animationManager.togglePause;
-  lottiejsLibrary.setSpeed = animationManager.setSpeed;
-  lottiejsLibrary.setDirection = animationManager.setDirection;
-  lottiejsLibrary.stop = animationManager.stop;
-  lottiejsLibrary.registerAnimation = animationManager.registerAnimation;
-  lottiejsLibrary.loadAnimation = loadAnimation;
-  lottiejsLibrary.resize = animationManager.resize;
-  lottiejsLibrary.goToAndStop = animationManager.goToAndStop;
-  lottiejsLibrary.destroy = animationManager.destroy;
-  lottiejsLibrary.setQuality = setQuality;
-  lottiejsLibrary.freeze = animationManager.freeze;
-  lottiejsLibrary.unfreeze = animationManager.unfreeze;
-  lottie.setVolume = animationManager.setVolume;
-  lottie.mute = animationManager.mute;
-  lottie.unmute = animationManager.unmute;
-  lottiejsLibrary.getRegisteredAnimations = animationManager.getRegisteredAnimations;
-  lottiejsLibrary.version = '[[BM_VERSION]]';
+  lottiejs.play = animationManager.play;
+  lottiejs.pause = animationManager.pause;
+  lottiejs.togglePause = animationManager.togglePause;
+  lottiejs.setSpeed = animationManager.setSpeed;
+  lottiejs.setDirection = animationManager.setDirection;
+  lottiejs.stop = animationManager.stop;
+  lottiejs.registerAnimation = animationManager.registerAnimation;
+  lottiejs.loadAnimation = loadAnimation;
+  lottiejs.resize = animationManager.resize;
+  lottiejs.goToAndStop = animationManager.goToAndStop;
+  lottiejs.destroy = animationManager.destroy;
+  lottiejs.setQuality = setQuality;
+  lottiejs.freeze = animationManager.freeze;
+  lottiejs.unfreeze = animationManager.unfreeze;
+  lottiejs.setVolume = animationManager.setVolume;
+  lottiejs.mute = animationManager.mute;
+  lottiejs.unmute = animationManager.unmute;
+  lottiejs.getRegisteredAnimations = animationManager.getRegisteredAnimations;
+  lottiejs.version = '[[BM_VERSION]]';
 
-  return lottiejsLibrary;
+  return lottiejs;
 }({}));
 
 var animations = [];
 
-var onmessage = function (evt) { // eslint-disable-line  no-unused-vars, no-redeclare
+onmessage = function (evt) {
   var canvas = evt.data.canvas;
   var ctx = canvas.getContext('2d');
-  var animation = lottiejs.loadAnimation({
+  var animation = lottie.loadAnimation({
     renderer: 'canvas',
     loop: evt.data.loop,
     autoplay: true,
diff --git a/tasks/build.js b/tasks/build.js
index 9b5d246..d0b7a36 100644
--- a/tasks/build.js
+++ b/tasks/build.js
@@ -618,7 +618,8 @@
 	})
 }
 
-async function modularizeCode(code) {
+async function modularizeCode(code, build) {
+	const globalScope = (build =='canvas_worker') ? 'self' : 'window'
 	return `(typeof navigator !== "undefined") && (function(root, factory) {
     if (typeof define === "function" && define.amd) {
         define(function() {
@@ -630,7 +631,7 @@
         root.lottie = factory(root);
         root.bodymovin = root.lottie;
     }
-}((window || {}), function(window) {
+}((${globalScope} || {}), function(window) {
 	${code}
 return lottie;
 }));`
@@ -640,7 +641,7 @@
 	const code = await concatScripts(scripts, version.build)
 	const wrappedCode = await wrapScriptWithModule(code, version.build)
 	const processedCode = await version.process(wrappedCode)
-	const modularizedCode = await modularizeCode(processedCode)
+	const modularizedCode = await modularizeCode(processedCode, version.build)
 	const saved = await save(modularizedCode, version.fileName)
 	return saved
 }
