diff -rpu cppcanvas-orig/source/mtfrenderer/implrenderer.cxx cppcanvas/source/mtfrenderer/implrenderer.cxx
--- cppcanvas-orig/source/mtfrenderer/implrenderer.cxx	2007-08-06 12:08:27.000000000 +0200
+++ cppcanvas/source/mtfrenderer/implrenderer.cxx	2007-10-22 13:55:35.000000000 +0200
@@ -526,6 +526,14 @@ namespace cppcanvas
                     const uno::Sequence< double > aEndColor(
                         ::vcl::unotools::colorToDoubleSequence( rParms.mrCanvas->getUNOCanvas()->getDevice(),
                                                                 aVCLEndColor ) );
+                    uno::Sequence< uno::Sequence < double > > aColors(2);
+                    uno::Sequence< double > aStops(2);
+
+                    aStops[0] = 0.0;
+                    aStops[1] = 1.0;
+
+                    aColors[0] = aStartColor;
+                    aColors[1] = aEndColor;
 
                     // Setup texture transformation
                     // ----------------------------
@@ -576,13 +584,13 @@ namespace cppcanvas
                             {
                                 case GRADIENT_LINEAR:
                                     nOffsetX = rGradient.GetBorder() / 100.0;
-                                    aTexture.Gradient = xFactory->createLinearHorizontalGradient( aStartColor,
-                                                                                                  aEndColor );
+                                    aTexture.Gradient = xFactory->createLinearHorizontalGradient( aColors,
+                                                                                                  aStops );
                                     break;
 
                                 case GRADIENT_AXIAL:
-                                    aTexture.Gradient = xFactory->createAxialHorizontalGradient( aStartColor,
-                                                                                                 aEndColor );
+                                    aTexture.Gradient = xFactory->createAxialHorizontalGradient( aColors,
+                                                                                                 aStops );
                                     break;
 
                                 default: // other cases can't happen
@@ -683,8 +691,8 @@ namespace cppcanvas
                                     aTextureTransformation.scale( nScale, nScale );
                                     aTextureTransformation.translate( 0.5, 0.5 );
 
-                                    aTexture.Gradient = xFactory->createEllipticalGradient( aEndColor,
-                                                                                            aStartColor,
+                                    aTexture.Gradient = xFactory->createEllipticalGradient( aColors,
+                                                                                            aStops,
                                                                                             geometry::RealRectangle2D(0.0,0.0,
                                                                                                                     1.0,1.0) );
                                 }
@@ -699,8 +707,8 @@ namespace cppcanvas
                                     aTextureTransformation.translate( 0.5, 0.5 );
 
                                     aTexture.Gradient = xFactory->createEllipticalGradient( 
-                                        aEndColor,
-                                        aStartColor,
+                                        aColors,
+                                        aStops,
                                         ::basegfx::unotools::rectangle2DFromB2DRectangle( 
                                             aBounds ));
                                 }
@@ -719,16 +727,16 @@ namespace cppcanvas
                                         nScaleX = nScaleY;
                                     }
 
-                                    aTexture.Gradient = xFactory->createRectangularGradient( aEndColor,
-                                                                                             aStartColor,
+                                    aTexture.Gradient = xFactory->createRectangularGradient( aColors,
+                                                                                             aStops,
                                                                                              geometry::RealRectangle2D(0.0,0.0,
                                                                                                                        1.0,1.0) );
                                     break;
 
                                 case GRADIENT_RECT:
                                     aTexture.Gradient = xFactory->createRectangularGradient( 
-                                        aEndColor,
-                                        aStartColor,
+                                        aColors,
+                                        aStops,
                                         ::basegfx::unotools::rectangle2DFromB2DRectangle( 
                                             aBounds ) );
                                     break;
