Clip de lienzo HTML y putImageData

Tengo un lienzo con una imagen grande en el fondo y una imagen redonda más pequeña frente a él. Logré este efecto de imagen redonda usando un clip como

ctx.save();

ctx.beginPath();
ctx.arc(x,y,r,0,Math.PI*2, true);   
ctx.closePath();
ctx.clip();

ctx.drawImage(img,x-r,y-r,2*r,2*r);     // draw the image
ctx.restore();

entonces quiero rotar la imagen redonda, así que utilizo un segundo contexto y giro y vuelvo a dibujar así

backCanvas=document.createElement('canvas');    
backContext=backCanvas.getContext('2d');
backCanvas.width=w;
backCanvas.height=h;

backContext.translate(w/2,h/2);
backContext.rotate(a);

backContext.drawImage(img,-w/2,-h/2,w,h);

var imgData=backContext.getImageData(0,0,w,h);

ctx.save();

ctx.beginPath();
ctx.arc(x,y,r,0,Math.PI*2, true);   
ctx.closePath();
ctx.clip();
ctx.putImageData(imgData,x,y);

ctx.restore();

Pero lo que sucede es que el fondo transparente negro se copia del lienzo posterior y el clip no puede "recortarlo".

Cualquier ayuda sería apreciad

Respuestas a la pregunta(1)

Su respuesta a la pregunta