Это не случайные числа, вызывающие проблемы, это «забавные» данные пикселей.Вот изменение:
for (i = 0, n = pixels.data.length; i < n; i += 4){
pixels.data[i + 0] = Math.max(0, Math.min(255, Math.floor(r * f)));
pixels.data[i + 1] = Math.max(0, Math.min(255, Math.floor(g * f)));
pixels.data[i + 2] = 0;
pixels.data[i + 3] = pixels.data[i + 3];
}
Если вы убедитесь, что значения пикселей являются целыми числами в нужном диапазоне, Opera работает нормально.
Да, также, и это, вероятно, очевидно, это очень многобыстрее, если вы вывести эти умножения из цикла.