I'm attempting to create a drawing surface with y increasing upwards, the origin at the centre, and scaled so that the unit circle just fits within the window.

floatw= getWidth(),h= getHeight(); g.addTransform(AffineTransform::verticalFlip(h)); g.addTransform(AffineTransform::translation(w/2, h/2)); floats= 1.f / std::min(w/2, h/2); g.addTransform(AffineTransform::scale(s)); g.setColour(Colours::white);

I test it with:

{ Path p; p.addEllipse(-1, -1, 1, 1); // unit circle p.closeSubPath(); g.strokePath(p, PathStrokeType(0.1f)); } { Path p; p.addRectangle(0, 0, .5f, .5f); p.closeSubPath(); g.fillPath(p); }

Everything works up to the scaling.

Now I have tested scaling by 0.5, and setting appropriate values for my circle and square. That works! But for a very small value of s, it fails!

I haven't dug into the framework yet, my guess is at some point it is converting to integer and rounding to 0.

But its unexpected behaviour!

π