 			_bufferHeight = Math.max(1, Math.sqrt(_bufferSize / aspect));
 			_bufferWidth  = Math.max(1, _bufferHeight * aspect);
 			dispose();
-			_emissionBmd  = new BitmapData(_bufferWidth, _bufferHeight, false, 0);
-			_bufferBmd    = new BitmapData(_bufferWidth, _bufferHeight, false, 0);
-			_occlusionBmd = new BitmapData(_bufferWidth, _bufferHeight, true, 0);
-			_occlusionBmp = new Bitmap(_occlusionBmd);
+			_baseBmd           = new BitmapData(_bufferWidth, _bufferHeight, false, 0);
+			_bufferBmd         = new BitmapData(_bufferWidth, _bufferHeight, false, 0);
+			_occlusionLoResBmd = new BitmapData(_bufferWidth, _bufferHeight, true, 0);
+			_occlusionLoResBmp = new Bitmap(_occlusionLoResBmd);
 		}
 
 		// Render a single frame.

			m.scale(_bufferWidth / _viewportWidth, _bufferHeight / _viewportHeight);
			var mul:Number = colorIntegrity ? intensity : intensity/(1<<passes);
			_ct.redMultiplier = _ct.greenMultiplier = _ct.blueMultiplier = mul;
			_emissionBmd.fillRect(_emissionBmd.rect, 0);
			_emissionBmd.draw(_emission, m, colorIntegrity ? null : _ct);
			if(_occlusion) {
				_occlusionBmd.fillRect(_occlusionBmd.rect, 0);
				m = _occlusion.transform.matrix.clone();
				m.scale(_bufferWidth / _viewportWidth, _bufferHeight / _viewportHeight);
				_occlusionBmd.draw(_occlusion, m);
				_emissionBmd.draw(_occlusionBmp, null, null, BlendMode.ERASE);
			}
			if(rasterQuality) stage.quality = savedQuality;
			var s:Number = 1 + (scale-1) / (1 << passes);

			m.translate(-tx, -ty);
			m.scale(s, s);
			m.translate(tx, ty);
			_lightBmp.bitmapData = _applyEffect(_baseBmd, _bufferBmd, m, passes);
			_lightBmp.width = _viewportWidth;
			_lightBmp.height = _viewportHeight;
			_lightBmp.smoothing = smoothing;
