 					this.alpha = a;
 				}
 			}
-			if (this._type == 1)
-				gr.drawRect(0,0,w,h,fillColor,this._lineSize>0?lineColor:null,this._lineSize);
-			else 
+			if (this._type == 1) {
+				if(_corner > 0) {
+					var fixCorner:int = w<h?w:h;
+					if(2*_corner > fixCorner)
+						fixCorner = parseInt(fixCorner/2+"");
+					
+					var path:Array =  [
+						["moveTo", fixCorner, 0], 
+						["arcTo", w, 0,    w, h, fixCorner], 
+						["arcTo", w, h,    0, h, fixCorner], 
+						["arcTo", 0, h,    0, 0, fixCorner], 
+						["arcTo", 0, 0,    w, 0, fixCorner],
+						["closePath"]
+					];
+					
+					gr.drawPath(0, 0, path, {fillStyle: fillColor}, this._lineSize>0?{strokeStyle:lineColor, lineWidth:this._lineSize}:null);
+				} else
+					gr.drawRect(0,0,w,h,fillColor,this._lineSize>0?lineColor:null,this._lineSize);
+			} else
 				gr.drawCircle(w/2,h/2,w/2, fillColor, this._lineSize>0?lineColor:null, this._lineSize);
 			
 			this._displayObject.repaint();

		private var _lineSize: Number;
		private var _lineColor: String;
		private var _fillColor: String;
		
		public function GGraph () {
			super();

						this._fillColor = Utils.toHexColor(c & 0xFFFFFF);   
				}
				
				str = xml.getAttribute("corner");
				if (str) {
					this._corner = parseInt(str);
				}
				
				if (type == "rect")
					this._type = 1;
				else
