
Ну посмотрел: при отсутствии прозрачности тот же самый InvalidateRect с тем же самым bErase = True
И фликов нет.
Они появляются если заменить Bmp.Draw на Bmp.DrawTransparent - и нет никаких других причин
Грубо говоря - сам посмотри
Потому-что DrawTransparent - это два (в отличие от просто Draw) рисования на целевом контексте
А DoubleBuffered нужен именно для того, чтобы можно было рисовать два раза по одному месту контекста без фликов
А вовсе не потому, что слово модное