             z += offsets.z;
         }
 			
-		build3DMatrix(m, tx, ty, tz, sx, sy, sz, rx, ry, rz, x, y, z);	
+		build3DMatrix(m, tx, ty, tz, sx, sy, sz, rx, ry, rz, x, y, z);
+		// Always prepend last
+        if (stretchX != 1 || stretchY != 1)
+            m.prependScale(stretchX, stretchY, 1);  
 
 		_flags |= COMPUTED_MATRIX3D_VALID;
 		return m;			

            y += offsets.y;
        }
        
        build2DMatrix(m, tx, ty, sx, sy, rz, x, y);
        
		_flags |= COMPUTED_MATRIX_VALID;

			return _computedMatrix3D;
	
	
		if(!offsets && !mirror && stretchX == 1 && stretchY == 1)
		{
			return layout.matrix3D;
		}
