>>854
もう修正してしまったようですが、一応。
元のDirectDraw.netを尊重すると

std::vector<int> srcColors(_srcColors->Length);
std::vector<int> dstColors(_srcColors->Length);



int *srcColors = (int*)malloc(sizeof(int) * _srcColors->Length);
int *dstColors = (int*)malloc(sizeof(int) * _dstColors->Length);

にして、::bltColorTransform を下のように変更するといいです。

::bltColorTransform(
surface, source->surface,
dst.left, dst.top,
src.left, src.top, src.right, src.bottom,
srcColors,
dstColors,
srcColors->Length,
source->colorKey,
vflip?-1:0 );

vectorでエラーが起こっているので、vectorを使わなければ問題なく動くようになります。
ご参考までに。