Я знаю, что это немного поздно (с 2010 года ответов нет), но звучит так, будто вам нужно (или нужно) настроить обертку данных вашего изображения.
Из следующей статьи MSDN (я знаю, что это MSDN, но его объяснение задействованных концепций ДЕЙСТВИТЕЛЬНО хорошо):
Когда видеоизображение хранится в памяти, буфер памятиможет содержать дополнительные байты заполнения после каждой строки пикселей.Байты заполнения влияют на то, как изображение хранится в памяти, но не влияют на способ отображения изображения.
Шаг - это количество байтов от одной строки пикселей в памяти до следующей строки пикселей в памяти.,Страйд также называется шагом.Если присутствуют байты заполнения, шаг будет шире, чем ширина изображения, как показано на следующем рисунке.
Подробнее здесь
Посмотрите, что вы указали как для ширины изображения, так и для шага изображения.Независимо от того, какие данные вы предоставляете для строки, она содержит больше битов, чем указано для шага (и я предполагаю, что ширина также совпадает).