internal override void doTransformImage(GDIBigLockedImage sourceImage, MapRectangle sourceBounds, GDIBigLockedImage destImage, MapRectangle destBounds)
        {
            MapRectangle inr     = new MapRectangle(-0.5, -0.5, (double)destImage.Height - 0.5, (double)destImage.Width - 0.5);
            MapRectangle outr    = MapRectangle.MapRectangleIgnoreOrder(MercatorCoordinateSystem.LatLonToMercator(destBounds.GetNW()), MercatorCoordinateSystem.LatLonToMercator(destBounds.GetSE()));
            JamaMatrix   matrix  = PolynomialImageTransformer.FindAffineMatrix(inr, outr);
            MapRectangle outr2   = new MapRectangle(-0.5, -0.5, (double)sourceImage.Height - 0.5, (double)sourceImage.Width - 0.5);
            JamaMatrix   matrix2 = PolynomialImageTransformer.FindAffineMatrix(sourceBounds, outr2);

            FastImageWarper.doWarp(destImage, sourceImage, new IPointTransformer[]
            {
                new Affine2DPointTransformer(matrix),
                this.destMercatorToSourceTransformer,
                new Affine2DPointTransformer(matrix2)
            }, this.interpolationMode);
        }