// apply normalisation translation ...
final Shape translatedShape = translateTransform.createTransformedShape(shape);
final AffineTransform scaleTransform = AffineTransform.getScaleInstance(scaleX, scaleY);
// apply scaling ...
final Shape scaledShape = scaleTransform.createTransformedShape(translatedShape);
// now retranslate the shape to its original position ...
final AffineTransform translateBackTransform =
AffineTransform.getTranslateInstance(bounds.getX(), bounds.getY());
return translateBackTransform.createTransformedShape(scaledShape);