Алгоритм простой:
1. Исходная картинка увеличивается в N раз (мне хватило 3, выше результат не сильно заметен).
2. На увеличенной картинке рисуем что надо с увеличением в N раз.
3. Уменьшаем полученную картинку в N раз, беря среднее значение цвета пикселей каждого квадрата NxN.
Код попозже вытяну из программы (много лишнего в процедуре). Но тут на DS есть
исходник реализующий данный алгоритм.