Я нашёл проблему. Ну, почти...
С кодом всё в порядке (может и уродливый, но работает).
А загвоздка была такая. У меня по таймеру выводилась картинка. А таймер стоял на 20 мс. И программа плохо запускалась.
И, если на 100 мс переставить, всё работает стабильно.
То есть, программа могла не запускаться из-за того, что слишком много картинок обрабатывается и рисуется?..
По идее 20 мс - это всего 50 кадров в секунду.