Evengard, метод осуществления - дилетантский.
Фактически используется только две "случано найденных" функции C++ (наиболее простых для моего понимания), в какие они входят библиотеки и как работают внутри себя не знаю.
GetPixel (dc, x, y); // Возвращает цвет точки
SetPixel (dc, x, y, Color); // Закрашивает точку указанным цветом
Получить цвет точки, запомнить его и потом вернуть на свое место - не сложно и общее экранное изображение не меняется. Остальное математика и алгоритмизация (перебрать, пересчитать, перерисовать, проверить коллизии "следы" и т.п.), пока не отимальная по производительности, но это исправимо.
EvilWisp, особенность отсутствия "следов" вероятнее всего связана с автоматичеким обновлением/перерисовкой изображения самого перемещаемого/прокручиваемого окна как в процессе выполнения, так и по окончании операции. Кто и когда это делает не знаю (возможно зависит от настроеки ОС).
Кнопка/галочка "движение искр" дублирует пункт "Анимация" контекстного меню иконки в области SystemTray (правый нижний угол). Функционально она останавливает/запускает движение "искр" (проверить можно: "наплодить" множество искр (например, 1000 при клике), отключить анимацию через контекстное меню - искры остануться на экране, не затирая их, открыть настройки и покликать на "движение искр").
P.S. Убедительная просьба ко всем, помогающим в отладке, присылайте скриншоты рабочих областей в формате bmp или png. По получаемым jpg-файлам практически не возможно дать какую-либо оценку реальной графической картины ситуации, все смазывается. И, также вместе с "тормозит" обязательно указывайте загруженность процессора (еще лучше если вместе с ней укажете его частоту, кол-во ядер и размер оперативной памяти - три цифры (все это можно получить из файла DxDiag.txt, но, каждый раз, надоедает)).