Это не поможет, возможно, с вашей утечкой, но вы перезагружаете массив каждые 40 мсек с данными, которые не изменились.
Возможно, вы захотите использовать замыкание вокруг инициализации.
По сути, просто создайте переменную, которая имеет функцию с циклом, с информацией о пикселях, заключенной в нее.
Затем вы просто продолжаете рекурсивно вызывать, где вы не реинициализируете, а просто используете переменную с циклом.
Таким образом, вы повторно используете ту же информацию о пикселях, она сохраняет свое состояние, что должно быть хорошо, если вы не редактируете холст в другом месте.