This may speed it up a little?
let ctx = c.getContext("2d");
let canvasDataWrapper = ctx.getImageData(0, 0, c.width, c.height);
let canvasData = imageDataWrapper.data; // 8 bit ARGB
let canvasData32 = new Uint32Array(canvasData.buffer); // 32 bit pixel
copyFnc = function(idxC, idxT){
canvasData[idxC + 0] = textureData[idxT + 0];
canvasData[idxC + 1] = textureData[idxT + 1];
canvasData[idxC + 2] = textureData[idxT + 2];
canvasData[idxC + 3] = 255;
};
Vs
copyFnc = function(idxC, idxT){
canvasData32[idxC] = textureData32[idxT]
};