fixed opacity
diff --git a/player/index.html b/player/index.html
index 0375fc1..93d5e65 100644
--- a/player/index.html
+++ b/player/index.html
@@ -36,6 +36,6 @@
     <!-- endbuild -->
 </head>
 <body style="background-color:#fff; margin: 0px;height: 100%; font-family: sans-serif;font-size: 10px">
-<div style="width:500px;height:500px;background-color:#000;display:inline-block" class="bodymovin" data-bm-path="exports/ninja" data-bm-type="svg" data-bm-loop="true" data-bm-prerender="true"></div>
+<div style="width:500px;height:500px;background-color:#000;display:inline-block" class="bodymovin" data-bm-path="exports/letters/full" data-bm-type="svg" data-bm-loop="true" data-bm-prerender="true"></div>
 </body>
 </html>
diff --git a/player/js/animation/AnimationItem.js b/player/js/animation/AnimationItem.js
index f74bc9a..37d7467 100644
--- a/player/js/animation/AnimationItem.js
+++ b/player/js/animation/AnimationItem.js
@@ -124,8 +124,8 @@
     this.totalFrames = this.animationData.animation.totalFrames;
     this.frameRate = this.animationData.animation.frameRate;
     this.firstFrame = Math.round(this.animationData.animation.ff*this.frameRate);
-    this.firstFrame = 23;
-    this.totalFrames = 1;
+    /*this.firstFrame = 23;
+    this.totalFrames = 1;*/
     this.frameMult = this.animationData.animation.frameRate / 1000;
     dataManager.completeData(this.animationData);
     this.renderer.buildItems(this.animationData.animation.layers);
diff --git a/player/js/elements/ShapeItemElement.js b/player/js/elements/ShapeItemElement.js
index 0c44ac0..0a2cbe3 100644
--- a/player/js/elements/ShapeItemElement.js
+++ b/player/js/elements/ShapeItemElement.js
@@ -141,9 +141,9 @@
                 this.renderRect(items[i],data[i],num,groupTransform);
             }
         }else if(items[i].ty == 'fl'){
-            this.renderFill(items[i],data[i],num);
+            this.renderFill(items[i],data[i],num,groupTransform);
         }else if(items[i].ty == 'st'){
-            this.renderStroke(items[i],data[i],num);
+            this.renderStroke(items[i],data[i],num,groupTransform);
         }else if(items[i].ty == 'gr'){
             this.renderShape(num,groupTransform,items[i].it,data[i].it);
         }else if(items[i].ty == 'tm'){
@@ -191,13 +191,13 @@
     }
 };
 
-ShapeItemElement.prototype.renderFill = function(styleData,viewData,num){
+ShapeItemElement.prototype.renderFill = function(styleData,viewData,num,groupTransform){
     var fillData = styleData.renderedData[num];
     var styleElem = viewData.style;
     if(!viewData.renderedFrames[this.globalData.frameNum]){
         viewData.renderedFrames[this.globalData.frameNum] = {
             c: fillData.color,
-            o: fillData.opacity
+            o: fillData.opacity*groupTransform.opacity
         }
     }
 
@@ -214,13 +214,13 @@
     viewData.lastData.o = o;
 };
 
-ShapeItemElement.prototype.renderStroke = function(styleData,viewData,num){
+ShapeItemElement.prototype.renderStroke = function(styleData,viewData,num,groupTransform){
     var fillData = styleData.renderedData[num];
     var styleElem = viewData.style;
     if(!viewData.renderedFrames[this.globalData.frameNum]){
         viewData.renderedFrames[this.globalData.frameNum] = {
             c: fillData.color,
-            o: fillData.opacity,
+            o: fillData.opacity*groupTransform.opacity,
             w: fillData.width
         };
         if(fillData.dashes){