При использовании следующего кода
const int w = 64 * 1024;
QImage img(w, 1, QImage::Format_RGB32);
QLinearGradient gradient(0, 0, img.width() - 1, 1);
gradient.setColorAt(0, Qt::blue);
gradient.setColorAt(1, Qt::red);
QPainter painter(&img);
painter.fillRect(img.rect(), gradient);
img.save("test.png");
Нормальный градиент отрисовывается только для w < 32*1024. Иначе, заполняются градиентом только те точки, чья х-координата меньше 32*1024.
Кроме того, даже для для случаев с w < 32 * 1024, цвет крайней правой точки равен не 0xFF0000 (Qt::red), а 0хFD0001 (для w = 32 * 1024 - 1).
Qt 4.6.0, WinXP, MSVS и MinGW.