 		}
 		
 		/**
+		 * The tinted color of the Canvas. Use 0xFFFFFF to draw the it normally.
+		 */
+		public function get color():uint { return _color; }
+		public function set color(value:uint):void
+		{
+			value %= 0xFFFFFF;
+			if (_color == value) return;
+			_color = value;
+			if (_alpha == 1 && _color == 0xFFFFFF)
+			{
+				_tint = null;
+				return;
+			}
+			_tint = _colorTransform;
+			_tint.redMultiplier = (_color >> 16 & 0xFF) / 255;
+			_tint.greenMultiplier = (_color >> 8 & 0xFF) / 255;
+			_tint.blueMultiplier = (_color & 0xFF) / 255;
+			_tint.alphaMultiplier = _alpha;
+		}
+		
+		/**
+		 * Change the opacity of the Canvas, a value from 0 to 1.
+		 */
+		public function get alpha():Number { return _alpha; }
+		public function set alpha(value:Number):void
+		{
+			if (value < 0) value = 0;
+			if (value > 1) value = 1;
+			if (_alpha == value) return;
+			_alpha = value;
+			if (_alpha == 1 && _color == 0xFFFFFF)
+			{
+				_tint = null;
+				return;
+			}
+			_tint = _colorTransform;
+			_tint.redMultiplier = (_color >> 16 & 0xFF) / 255;
+			_tint.greenMultiplier = (_color >> 8 & 0xFF) / 255;
+			_tint.blueMultiplier = (_color & 0xFF) / 255;
+			_tint.alphaMultiplier = _alpha;
+		}
+		
+		/**
 		 * Width of the canvas.
 		 */
 		public function get width():uint { return _width; }

{
	import flash.display.BitmapData;
	import flash.display.Graphics;
	import flash.geom.Matrix;
	import flash.geom.Point;
	import flash.geom.Rectangle;

				while (xx < _refWidth)
				{
					buffer = _buffers[_ref.getPixel(xx, yy)];
					if (_tint || blend)
					{
						_matrix.tx = point.x;
						_matrix.ty = point.y;
						FP.buffer.draw(buffer, _matrix, _tint, blend);
					}
					else FP.buffer.copyPixels(buffer, buffer.rect, point, null, null, true);
					point.x += _maxWidth;
					xx ++;
				}
