Yeah I noticed this issue on windows too, here's the fix.
starling.display.DisplayObject
// Images that are bigger than the current back buffer are drawn in multiple steps.
var stepX:Number;
var stepY:Number = projectionY;
var stepWidth:Number = painter.backBufferWidth / scaleX;
var stepHeight:Number = painter.backBufferHeight / scaleY;
var positionInBitmap:Point = Pool.getPoint(0, 0);
var boundsInBuffer:Rectangle = Pool.getRectangle(0, 0,
painter.backBufferWidth * backBufferScale,
painter.backBufferHeight * backBufferScale);
while (positionInBitmap.y < out.height)
{
stepX = projectionX;
positionInBitmap.x = 0;
while (positionInBitmap.x < out.width)
{
painter.clear(color, alpha);
painter.state.setProjectionMatrix(stepX, stepY, stepWidth, stepHeight,
stageWidth, stageHeight, stage.cameraPosition);
if (_mask) painter.drawMask(mask, this);
if (_filter) _filter.render(painter);
else render(painter);
if (_mask) painter.eraseMask(mask, this);
painter.finishMeshBatch();
//line 478 - for some reason the bitmapdata is distorted depending the size of the stageHeight and stageWidth on windows. Throwing in an additional bitmapdata and using copyPixels method fixes it.
var bmd:BitmapData = new BitmapData(stepWidth, stepHeight, true, 0x00ffffff);
painter.context.drawToBitmapData(bmd, boundsInBuffer);
out.copyPixels(bmd, boundsInBuffer,positionInBitmap);
stepX += stepWidth;
positionInBitmap.x += stepWidth * totalScaleX;
}
stepY += stepHeight;
positionInBitmap.y += stepHeight * totalScaleY;
}
painter.popState();
Pool.putRectangle(boundsInBuffer);
Pool.putPoint(positionInBitmap);
return out;
}