If you goto line 14707 in void RenderAnimation() and change this funny if/else-condition as follows:
............
if (g_SP.ishorizontal) {
GdipDrawImageRectRectI(graphics, g_SP.img, 0, -2, g_SP.imgH, g_SP.imgH, g_SP.imgH * g_SP.frametouse - g_SP.imgH, 0, g_SP.imgH, g_SP.imgH, 2, 0, NULL, NULL); // MLL: brush misalignment?
} else {
GdipDrawImageRectRectI(graphics, g_SP.img, 0, 0, g_SP.imgW, g_SP.imgW, g_SP.imgW * g_SP.frametouse - g_SP.imgW, 0, g_SP.imgW, g_SP.imgW, 2, 0, NULL, NULL);
}
............
you'll see no scan line flicker in the DLL spinner any more.
So this is a geometrical issue and most probably, its random nature is related to brush misalignment at some stage of GDI+ image creation process. There's a lot of work going on directly in memory rather than in a specific DC canvas, and such manipulations are sensitive to proper brush alignment with calls to SetBrushOrgEx() when the canvases and brushes in question are not managed directly by Windows itself (i.e. do not belong to the OS stock objects). Especially when world transforms are in progress, and image scaling inherent in GdipDrawImageRectRectI() is one of such transforms.
This solution is definitely a crutch but as long as it works, it is just as good as any other one.