Even Firefox's implementation is inconsistent. drawShape uses the "infinite transparent black bitmap" but drawImage does not.
I believe even many at Mozilla would like Firefox to switch to the Chrome/Safari method because it's more easily GPU accelerated. In that direction it would be nice if 2 things in the spec changed #1) Get rid of the "infinite transparent black bitmap" stuff and change it to something that say only pixels inside the shape/image are effected #2) Change the globalCompositingOperation spec from referencing PORTER-DUFF to referencing OpenGL source-over glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); source-in glBlendFunc(GL_DST_ALPHA, GL_ZERO); source-out glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_ZERO); source-atop glBlendFunc(GL_DST_ALPHA, GL_ONE_MINUS_SRC_ALPHA); destination-over glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_ONE); destination-in glBlendFunc(GL_ZERO, GL_SRC_ALPHA) destination-out glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_ALPHA); destination-atop glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_SRC_ALPHA); lighter glBlendFunc(GL_ONE, GL_ONE); darker deprecated copy glBlendFunc(GL_ONE, GL_ZERO); xor glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
