По сути, вы хотите создать два линейных градиента, один горизонтальный, один вертикальный, переходя от прозрачного к любому желаемому цвету rgba. Затем нарисуйте один градиент над другим на холсте. Хотя есть некоторая хитрость, я обнаружил, что canvas не создает очень чистые градиенты RGBA, но вы можете использовать полупрозрачные цвета, нарисовать первый раз, второй дважды, затем первый снова, и кажется, что дать довольно хорошие результаты. Вы можете поиграть с ним, вот код для работы.
var Draw = function(clr1, clr2){
clr1 = clr1 || 'rgba(255, 0, 0, 0.5)';
clr2 = clr2 || 'rgba(0, 0, 255, 0.5)';
var bg1 = document.getElementById('canvas').getContext('2d'),
grad1 = bg1.createLinearGradient(0, 128, 256, 128),
grad2 = bg1.createLinearGradient(128, 0, 128, 256);
grad1.addColorStop(0, 'rgba(255, 0, 0, 0)');
grad1.addColorStop(1, clr1);
grad2.addColorStop(0, 'rgba(0, 0, 255, 0)');
grad2.addColorStop(1, clr2);
bg1.fillStyle = grad1;
bg1.fillRect(0, 0, 256, 256);
bg1.fillStyle = grad2;
bg1.fillRect(0, 0, 256, 256);
bg1.fillRect(0, 0, 256, 256);
bg1.fillStyle = grad1;
bg1.fillRect(0, 0, 256, 256);
}