diff -rup cppcanvas-orig/source/mtfrenderer/polypolyaction.cxx cppcanvas/source/mtfrenderer/polypolyaction.cxx
--- cppcanvas-orig/source/mtfrenderer/polypolyaction.cxx	2007-11-10 16:23:04.000000000 +0100
+++ cppcanvas/source/mtfrenderer/polypolyaction.cxx	2007-11-10 16:38:50.000000000 +0100
@@ -44,7 +44,7 @@
 #include <tools/gen.hxx>
 #include <vcl/canvastools.hxx>
 
-#include <basegfx/range/b2drange.hxx>
+#include <basegfx/range/b2drectangle.hxx>
 #include <basegfx/tools/canvastools.hxx>
 #include <basegfx/polygon/b2dpolypolygon.hxx>
 #include <basegfx/polygon/b2dpolypolygontools.hxx>
@@ -112,7 +112,7 @@ namespace cppcanvas 
                                             bool                                bFill,
                                             bool                                bStroke ) :
                 CachedPrimitiveBase( rCanvas, false ),
-                mxPolyPoly( ::vcl::unotools::xPolyPolygonFromPolyPolygon( rCanvas->getUNOCanvas()->getDevice(), /*#i76339#*/ ::PolyPolygon(rPolyPoly) ) ),
+                mxPolyPoly( ::basegfx::unotools::xPolyPolygonFromB2DPolyPolygon( rCanvas->getUNOCanvas()->getDevice(), rPolyPoly) ),
                 maBounds( ::basegfx::tools::getRange(rPolyPoly) ),
                 mpCanvas( rCanvas ),
                 maState(),
@@ -134,7 +134,7 @@ namespace cppcanvas 
                                             bool                                bStroke,
                                             int                                 nTransparency ) :
                 CachedPrimitiveBase( rCanvas, false ),
-                mxPolyPoly( ::vcl::unotools::xPolyPolygonFromPolyPolygon( rCanvas->getUNOCanvas()->getDevice(), /*#i76339#*/ ::PolyPolygon(rPolyPoly) ) ),
+                mxPolyPoly( ::basegfx::unotools::xPolyPolygonFromB2DPolyPolygon( rCanvas->getUNOCanvas()->getDevice(), rPolyPoly) ),
                 maBounds( ::basegfx::tools::getRange(rPolyPoly) ),
                 mpCanvas( rCanvas ),
                 maState(),
@@ -268,10 +268,10 @@ namespace cppcanvas 
             class TexturedPolyPolyAction : public CachedPrimitiveBase
             { 
             public: 
-                TexturedPolyPolyAction( const ::PolyPolygon&		rPoly,  
-                                        const CanvasSharedPtr&		rCanvas, 
-                                        const OutDevState&			rState,
-                                        const rendering::Texture& 	rTexture ); 
+                TexturedPolyPolyAction( const ::basegfx::B2DPolyPolygon& rPoly,
+                                        const CanvasSharedPtr&		     rCanvas, 
+                                        const OutDevState&			     rState,
+                                        const rendering::Texture& 	     rTexture ); 
 
                 virtual bool render( const ::basegfx::B2DHomMatrix& rTransformation,
                                      const Subset&					rSubset ) const;
@@ -288,7 +288,7 @@ namespace cppcanvas 
                                      const ::basegfx::B2DHomMatrix&                 rTransformation ) const;
 
                 const uno::Reference< rendering::XPolyPolygon2D >	mxPolyPoly;
-                const ::Rectangle									maBounds;
+                const ::basegfx::B2DRectangle						maBounds;
                 const CanvasSharedPtr								mpCanvas;
 
             	// stroke color is now implicit: the maState.DeviceColor member
@@ -296,14 +296,13 @@ namespace cppcanvas 
                 const rendering::Texture							maTexture;
             };
 
-            TexturedPolyPolyAction::TexturedPolyPolyAction( const ::PolyPolygon&		rPolyPoly, 
-                                                            const CanvasSharedPtr&		rCanvas,
-                                                            const OutDevState& 			rState,
-                                                            const rendering::Texture& 	rTexture ) :
+            TexturedPolyPolyAction::TexturedPolyPolyAction( const ::basegfx::B2DPolyPolygon& rPolyPoly, 
+                                                            const CanvasSharedPtr&		     rCanvas,
+                                                            const OutDevState& 			     rState,
+                                                            const rendering::Texture& 	     rTexture ) :
                 CachedPrimitiveBase( rCanvas, true ),
-                mxPolyPoly( ::vcl::unotools::xPolyPolygonFromPolyPolygon( rCanvas->getUNOCanvas()->getDevice(), 
-                                                                          rPolyPoly ) ),
-                maBounds( rPolyPoly.GetBoundRect() ),
+                mxPolyPoly( ::basegfx::unotools::xPolyPolygonFromB2DPolyPolygon( rCanvas->getUNOCanvas()->getDevice(), rPolyPoly) ),
+                maBounds( ::basegfx::tools::getRange(rPolyPoly) ),
                 mpCanvas( rCanvas ),
                 maState(),
                 maTexture( rTexture )
@@ -351,7 +350,7 @@ namespace cppcanvas 
                 ::canvas::tools::prependToRenderState(aLocalState, rTransformation);
                 
                 return tools::calcDevicePixelBounds( 
-                    ::vcl::unotools::b2DRectangleFromRectangle( maBounds ),
+                    maBounds,
                     mpCanvas->getViewState(),
                     aLocalState );
             }
@@ -383,7 +382,7 @@ namespace cppcanvas 
             class StrokedPolyPolyAction : public CachedPrimitiveBase
             { 
             public: 
-                StrokedPolyPolyAction( const ::PolyPolygon&					rPoly,  
+                StrokedPolyPolyAction( const ::basegfx::B2DPolyPolygon&     rPoly,
                                        const CanvasSharedPtr&				rCanvas, 
                                        const OutDevState&					rState,
                                        const rendering::StrokeAttributes&	rStrokeAttributes ); 
@@ -403,20 +402,19 @@ namespace cppcanvas 
                                      const ::basegfx::B2DHomMatrix&                 rTransformation ) const;
 
                 const uno::Reference< rendering::XPolyPolygon2D >	mxPolyPoly;
-                const ::Rectangle									maBounds;
+                const ::basegfx::B2DRectangle						maBounds;
                 const CanvasSharedPtr								mpCanvas;
                 rendering::RenderState								maState;
                 const rendering::StrokeAttributes					maStrokeAttributes;
             };
 
-            StrokedPolyPolyAction::StrokedPolyPolyAction( const ::PolyPolygon&					rPolyPoly, 
+            StrokedPolyPolyAction::StrokedPolyPolyAction( const ::basegfx::B2DPolyPolygon&      rPolyPoly, 
                                                           const CanvasSharedPtr&				rCanvas,
                                                           const OutDevState& 					rState,
                                                           const rendering::StrokeAttributes&	rStrokeAttributes ) :
                 CachedPrimitiveBase( rCanvas, false ),
-                mxPolyPoly( ::vcl::unotools::xPolyPolygonFromPolyPolygon( rCanvas->getUNOCanvas()->getDevice(), 
-                                                                          rPolyPoly ) ),
-                maBounds( rPolyPoly.GetBoundRect() ),
+                mxPolyPoly( ::basegfx::unotools::xPolyPolygonFromB2DPolyPolygon( rCanvas->getUNOCanvas()->getDevice(), rPolyPoly) ),
+                maBounds( ::basegfx::tools::getRange(rPolyPoly) ),
                 mpCanvas( rCanvas ),
                 maState(),
                 maStrokeAttributes( rStrokeAttributes )
@@ -462,7 +460,7 @@ namespace cppcanvas 
                 ::canvas::tools::prependToRenderState(aLocalState, rTransformation);
                 
                 return tools::calcDevicePixelBounds( 
-                    ::vcl::unotools::b2DRectangleFromRectangle( maBounds ),
+                    maBounds,
                     mpCanvas->getViewState(),
                     aLocalState );
             }
@@ -501,12 +499,12 @@ namespace cppcanvas 
                                                         rState.isLineColorSet ) );
         }
 
-        ActionSharedPtr PolyPolyActionFactory::createPolyPolyAction( const ::basegfx::B2DPolyPolygon& rPoly,  
+        ActionSharedPtr PolyPolyActionFactory::createPolyPolyAction( const ::basegfx::B2DPolyPolygon&   rPoly,  
                                                                      const CanvasSharedPtr&             rCanvas, 
                                                                      const OutDevState&                 rState,
                                                                      const rendering::Texture&          rTexture )
         {
-            return ActionSharedPtr( new TexturedPolyPolyAction( /*#i76339#*/ ::PolyPolygon(rPoly), rCanvas, rState, rTexture ) );
+            return ActionSharedPtr( new TexturedPolyPolyAction( rPoly, rCanvas, rState, rTexture ) );
         }
 
         ActionSharedPtr PolyPolyActionFactory::createLinePolyPolyAction( const ::basegfx::B2DPolyPolygon& rPoly,  
@@ -528,7 +526,7 @@ namespace cppcanvas 
         {
             OSL_ENSURE( rState.isLineColorSet,
                         "PolyPolyActionFactory::createPolyPolyAction() for strokes called with empty line color" );
-            return ActionSharedPtr( new StrokedPolyPolyAction( /*#i76339#*/ ::PolyPolygon(rPoly), rCanvas, rState, rStrokeAttributes ) );
+            return ActionSharedPtr( new StrokedPolyPolyAction( rPoly, rCanvas, rState, rStrokeAttributes ) );
         }
 
         ActionSharedPtr PolyPolyActionFactory::createPolyPolyAction( const ::basegfx::B2DPolyPolygon& rPoly,  
