- QTransform aTransform = aParent->getViewTransform();
- double aScale = aTransform.m11(); // same as m22(), viewer specific
- if( fabs( aScale ) < EPSILON )
+ // take into account a transformation of the base image item
+ double aXScale = 1.0;
+ double aYScale = 1.0;
+ if( QGraphicsItem* aGrandParent = aParent->parentItem() )
+ {
+ QTransform aTransform = aGrandParent->transform();
+ QLineF aLine( 0, 0, 1, 1 );
+ aLine = aTransform.map( aLine );
+ aXScale = aLine.dx();
+ aYScale = aLine.dy();
+ }
+
+ QTransform aViewTransform = aParent->getViewTransform();
+ double aScale = aViewTransform.m11(); // same as m22(), viewer specific
+ if( fabs( aScale ) < EPSILON || fabs( aXScale ) < EPSILON || fabs( aYScale ) < EPSILON)