diff --git a/player/index.html b/player/index.html
index e3cd954..6a9780b 100644
--- a/player/index.html
+++ b/player/index.html
@@ -23,23 +23,8 @@
             opacity: 1;
         }
 
-        rect{
-           /* opacity: .5!important;*/
-        }
-
-        svg{
-            /*border: 1px solid red;*/
-        }
-
-         .rbt-black{
-            font-weight: 900;
-            font-family: 'Roboto', sans-serif;
-        }
-
-        .strokeClase1, .fillClase1{
-            fill: red;
-            stroke:aquamarine;
-            stroke-opacity: 0;
+        .botas_loop_1,.botas_loop_2{
+            display:none
         }
 
     </style>
@@ -120,10 +105,10 @@
         autoplay: true,
         autoloadSegments: true,
         rendererSettings: {
-            progressiveLoad:true
+            progressiveLoad:false
         },
         //animationData: anim2
-        path: 'exports/render/data.json'
+        path: 'exports/navidad/data.json'
     };
     anim = bodymovin.loadAnimation(animData);
 
diff --git a/player/js/elements/svgElements/SVGBaseElement.js b/player/js/elements/svgElements/SVGBaseElement.js
index 93702a0..e972d16 100644
--- a/player/js/elements/svgElements/SVGBaseElement.js
+++ b/player/js/elements/svgElements/SVGBaseElement.js
@@ -55,8 +55,8 @@
             feCTr.appendChild(feFunc);
             this.globalData.defs.appendChild(fil);
             var alphaRect = document.createElementNS(svgNS,'rect');
-            alphaRect.setAttribute('width',this.comp.data.w);
-            alphaRect.setAttribute('height',this.comp.data.h);
+            alphaRect.setAttribute('width',this.comp.data ? this.comp.data.w : this.globalData.compSize.w);
+            alphaRect.setAttribute('height',this.comp.data ? this.comp.data.h : this.globalData.compSize.h);
             alphaRect.setAttribute('x','0');
             alphaRect.setAttribute('y','0');
             alphaRect.setAttribute('fill','#ffffff');
diff --git a/player/js/mask.js b/player/js/mask.js
index 1fd8264..bad913b 100644
--- a/player/js/mask.js
+++ b/player/js/mask.js
@@ -31,8 +31,8 @@
         if((properties[i].mode == 's' || properties[i].mode == 'i') && count == 0){
             rect = document.createElementNS(svgNS, 'rect');
             rect.setAttribute('fill', '#ffffff');
-            rect.setAttribute('width', this.element.comp.data.w);
-            rect.setAttribute('height', this.element.comp.data.h);
+            rect.setAttribute('width', this.element.comp.data ? this.element.comp.data.w : this.element.globalData.compSize.w);
+            rect.setAttribute('height', this.element.comp.data ? this.element.comp.data.h : this.element.globalData.compSize.h);
             currentMasks.push(rect);
         } else {
             rect = null;
diff --git a/player/js/utils/bez.js b/player/js/utils/bez.js
index 69a5496..2eb3e6e 100644
--- a/player/js/utils/bez.js
+++ b/player/js/utils/bez.js
@@ -42,7 +42,6 @@
         return easingFunctions[encodedFuncName];
     }*/
     var getBezierLength = (function(){
-        var storedBezierCurves = {};
 
         function Segment(l,p){
             this.l = l;
@@ -50,10 +49,6 @@
         }
 
         return function(pt1,pt2,pt3,pt4){
-            var bezierName = (pt1.join('_')+'_'+pt2.join('_')+'_'+pt3.join('_')+'_'+pt4.join('_')).replace(/\./g, 'p');
-            if(storedBezierCurves[bezierName]){
-                return storedBezierCurves[bezierName];
-            }
             var curveSegments = defaultCurveSegments;
             var k;
             var i, len;
@@ -83,7 +78,6 @@
                 lengthData.segments.push(new Segment(addedLength,perc));
             }
             lengthData.addedLength = addedLength;
-            storedBezierCurves[bezierName] = lengthData;
             return lengthData;
         };
     }());
diff --git a/player/js/utils/shapes/TrimModifier.js b/player/js/utils/shapes/TrimModifier.js
index 3094222..cd50cf5 100644
--- a/player/js/utils/shapes/TrimModifier.js
+++ b/player/js/utils/shapes/TrimModifier.js
@@ -88,19 +88,24 @@
                 shapeData.shape.paths = shapeData.last;
             } else {
                 shapePaths = shapeData.shape.paths;
-                shapeData.shape.mdf = true;
                 jLen = shapePaths.length;
-                pathsData = [];
                 totalShapeLength = 0;
-                for(j=0;j<jLen;j+=1){
-                    pathData = this.getSegmentsLength(shapePaths[j]);
-                    pathsData.push(pathData);
-                    totalShapeLength += pathData.totalLength;
+                if(!shapeData.shape.mdf && shapeData.pathsData){
+                    totalShapeLength = shapeData.totalShapeLength;
+                } else {
+                    pathsData = [];
+                    for(j=0;j<jLen;j+=1){
+                        pathData = this.getSegmentsLength(shapePaths[j]);
+                        pathsData.push(pathData);
+                        totalShapeLength += pathData.totalLength;
+                    }
+                    shapeData.totalShapeLength = totalShapeLength;
+                    shapeData.pathsData = pathsData;
                 }
-                shapeData.totalShapeLength = totalShapeLength;
-                shapeData.pathsData = pathsData;
+
                 totalModifierLength += totalShapeLength;
             }
+            shapeData.shape.mdf = true;
         }
         for(i=0;i<len;i+=1){
             newShapes = [];
