diff --git a/player/js/elements/svgElements/SVGTextElement.js b/player/js/elements/svgElements/SVGTextElement.js
index e580b02..eceafc9 100644
--- a/player/js/elements/svgElements/SVGTextElement.js
+++ b/player/js/elements/svgElements/SVGTextElement.js
@@ -184,6 +184,11 @@
           }
           glyphElement = new SVGShapeElement(data, this.globalData, this);
         }
+        if (this.textSpans[i].glyph) {
+          var glyph = this.textSpans[i].glyph;
+          this.textSpans[i].childSpan.removeChild(glyph.layerElement);
+          glyph.destroy();
+        }
         this.textSpans[i].glyph = glyphElement;
         glyphElement._debug = true;
         glyphElement.prepareFrame(0);
diff --git a/player/js/module_worker.js b/player/js/module_worker.js
index 08fcf46..fc4faa9 100644
--- a/player/js/module_worker.js
+++ b/player/js/module_worker.js
@@ -10,7 +10,7 @@
   var localIdCounter = 0;
   var animations = {};
 
-  var styleProperties = ['width', 'height', 'display', 'transform', 'opacity', 'contentVisibility'];
+  var styleProperties = ['width', 'height', 'display', 'transform', 'opacity', 'contentVisibility', 'mix-blend-mode'];
   function createElement(namespace, type) {
     var style = {
       serialize: function () {
@@ -348,6 +348,10 @@
       if (animations[payload.id]) {
         animations[payload.id].resize();
       }
+    } else if (type === 'playSegments') {
+      if (animations[payload.id]) {
+        animations[payload.id].playSegments(payload.arr, payload.forceFlag);
+      }
     }
   };
 }
@@ -594,6 +598,16 @@
           },
         });
       },
+      playSegments: function (arr, forceFlag) {
+        workerInstance.postMessage({
+          type: 'playSegments',
+          payload: {
+            id: animationId,
+            arr: arr,
+            forceFlag: forceFlag,
+          },
+        });
+      },
       setSubframe: function (value) {
         workerInstance.postMessage({
           type: 'setSubframe',
diff --git a/player/js/renderers/SVGRenderer.js b/player/js/renderers/SVGRenderer.js
index 35d614c..20df797 100644
--- a/player/js/renderers/SVGRenderer.js
+++ b/player/js/renderers/SVGRenderer.js
@@ -56,6 +56,8 @@
       x: (config && config.filterSize && config.filterSize.x) || '0%',
       y: (config && config.filterSize && config.filterSize.y) || '0%',
     },
+    width: (config && config.width),
+    height: (config && config.height),
   };
 
   this.globalData = {
diff --git a/player/js/renderers/SVGRendererBase.js b/player/js/renderers/SVGRendererBase.js
index 4e0f82f..0768cf7 100644
--- a/player/js/renderers/SVGRendererBase.js
+++ b/player/js/renderers/SVGRendererBase.js
@@ -58,6 +58,12 @@
     this.svgElement.style.transform = 'translate3d(0,0,0)';
     this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;
   }
+  if (this.renderConfig.width) {
+    this.svgElement.setAttribute('width', this.renderConfig.width);
+  }
+  if (this.renderConfig.height) {
+    this.svgElement.setAttribute('height', this.renderConfig.height);
+  }
   if (this.renderConfig.className) {
     this.svgElement.setAttribute('class', this.renderConfig.className);
   }
diff --git a/player/js/utils/expressions/ExpressionManager.js b/player/js/utils/expressions/ExpressionManager.js
index 1198523..4f0b264 100644
--- a/player/js/utils/expressions/ExpressionManager.js
+++ b/player/js/utils/expressions/ExpressionManager.js
@@ -727,7 +727,7 @@
       return scoped_bm_rt;
     }
     // Bundlers will see these as dead code and unless we reference them
-    executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];
+    executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];
     return executeExpression;
   }
 
diff --git a/player/js/worker_wrapper.js b/player/js/worker_wrapper.js
index 598289b..52559ee 100644
--- a/player/js/worker_wrapper.js
+++ b/player/js/worker_wrapper.js
@@ -2,7 +2,7 @@
   var localIdCounter = 0;
   var animations = {};
 
-  var styleProperties = ['width', 'height', 'display', 'transform', 'opacity', 'contentVisibility'];
+  var styleProperties = ['width', 'height', 'display', 'transform', 'opacity', 'contentVisibility', 'mix-blend-mode'];
   function createElement(namespace, type) {
     var style = {
       serialize: function () {
@@ -295,6 +295,10 @@
       if (animations[payload.id]) {
         animations[payload.id].resize();
       }
+    } else if (type === 'playSegments') {
+      if (animations[payload.id]) {
+        animations[payload.id].playSegments(payload.arr, payload.forceFlag);
+      }
     }
   };
 }
@@ -541,6 +545,16 @@
           },
         });
       },
+      playSegments: function (arr, forceFlag) {
+        workerInstance.postMessage({
+          type: 'playSegments',
+          payload: {
+            id: animationId,
+            arr: arr,
+            forceFlag: forceFlag,
+          },
+        });
+      },
       setSubframe: function (value) {
         workerInstance.postMessage({
           type: 'setSubframe',
