Weird behaviour when using Scale, Rotate in Graphics

I reported the issue to WRI on November 21. On December 16 they confirmed that it is a known bug. (I forgot to update the question till now.)


Just as a complementary and extended comment and as was recently observed in a related post, you get exactly the same problem if, not surprisingly, you use geometric transformation functions instead:

Given the initial object to transform:

circles = {Circle[{0, 0}, 1], Circle[{0, 0.5}, 0.5]};

the OP transformation:

t1 = Rotate[Scale[circles, 12], -45 Degree, {0, 0}];

is equivalent to:

t2 = GeometricTransformation[circles, 
   ScalingTransform[{12, 12}].RotationTransform[-45 Degree, {0, 0}]];

and you can check they exactly superimpose:

GraphicsGrid@Partition[Table[Graphics[{t1,t2},
    PlotRange -> {{-a, a}, {-a, a}}, ImageSize -> 100], {a, 11, 20}], 5]

enter image description here

You can also observe this strange behaviour just by manually resizing the graphic:

Graphics[t2] (* or Graphics[t1] *) 

enter image description here

enter image description here

enter image description here


Probably the best way to get around this issue is to make sure that the transformation is calculated explicitly before Graphics has to draw it. You can use TransformedRegion for this:

rotatedCircles = TransformedRegion[
  #, 
  ScalingTransform[{12, 12}, {0, 0}] @* RotationTransform[-45 Degree]
]& /@ circles

Graphics[rotatedCircles]

Note that rotatedCircles has evaluated and no longer has a transformation wrapper around it any more.