GDI + линейный градиент странного поведения

Мне нужно создать кисть с линейным градиентом, чтобы нарисовать поверхность с помощью GDI +. На вход я получаю следующие параметры:

Viewport rect:   x = 0, y = 0, width = 744.09448819f, height = 1052.3622047f
Fill rect:       x = 13.040037f, y = 17.478735f, width = 721.3703f, height = 1009.1535f
Gradient start:  x = 384.8, y = 611.46
Gradient stop:   x = 378.93, y = 474.96
Start color:     a = 255, r = 179, g = 221, b = 253 (between 0 and 255)
End color:       a = 255, r = 51, g = 102, b = 152  (between 0 and 255)
Matrix to apply: a = 7.7430985, b = 0, c = 0, d = 7.2926249, e = -2439.6639, f = -3446.2263
Wrap mode:       clamp

Эти значения были извлечены из файла SVG. Когда я открываю его в своем браузере, я получаю следующий результат:
https://drive.google.com/open?id=0B7C-RwCTA9qaNnFsaGJpenlseGc

Теперь я пытаюсь нарисовать точно такой же градиент с помощью GDI +. Для этого я использую Embarcadero RAD Studio c ++ builder. Я написал следующий код:

void DrawGradient()
{
std::auto_ptr<TBitmap> pBitmap(new TBitmap());
pBitmap->Width  = 744.09448819f;
pBitmap->Height = 1052.3622047f;
pBitmap->Canvas->Brush->Color = clWhite;
pBitmap->Canvas->FillRect(TRect(0, 0, pBitmap->Width, pBitmap->Height));

Gdiplus::Graphics graphics(pBitmap->Canvas->Handle);

Gdiplus::LinearGradientBrush brush(
Gdiplus::PointF(384.8, 611.46),
Gdiplus::PointF(378.93, 474.96),
Gdiplus::Color(255, 179, 221, 253),
Gdiplus::Color(255, 51, 102, 152)
);

Gdiplus::Matrix matrix(7.7430985, 0, 0, 7.2926249, -2439.6639, -3446.2263);
brush.SetTransform(&matrix);

graphics.FillRectangle(&brush, 13.040037f, 17.478735f, 721.3703f, 1009.1535f);

pBitmap->SaveToFile(L"test.bmp");
}

Однако я получаю этот результат:
https://drive.google.com/open?id=0B7C-RwCTA9qaU1BhSTJxay16Z00

Оставляя в стороне вопрос об ограничении, для которого я знаю, что GDI + не предлагает простого решения (как, например, помещение Gdiplus :: WrapModeClamp в функцию SetWrapMode (), которая может быть настолько простой для пользователей), результирующий чертеж должен по крайней мере быть ближе к ожидаемому результату, или я ошибаюсь?

Кто-нибудь может объяснить мне, почему я получаю такой другой результат?

НОТА Я уже подправил все параметры, получаю сразу несколько вариаций одного и того же неправильного результата

НОТА Оригинальный SVG, на который я ссылаюсь выше, можно получить здесь:
https://drive.google.com/open?id=0B7C-RwCTA9qaYkNRQ3lJNC1fNmM

С уважением

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …