Esta es otra manera de hacer lo mismo, sólo que tampoco funcionará en explorer 8:
Código PHP:
<script type="text/javascript">
var c,ctx,cero,uno,dos,historial=[];
function _(x){return document.getElementById(x);}
function inicio(){
c=document.getElementById('c');
ctx=c.getContext('2d');
ctx.fillStyle ="#F00";
ctx.fillRect(0,0,300,300);
cero=ctx.getImageData(0, 0, 300, 300);
historial.push(cero);
}
function addSmile1(){
ctx.drawImage(_('im1'),5,10);
uno=ctx.getImageData(0, 0, 300, 300);
historial.push(uno);
}
function addSmile2(){
ctx.drawImage(_('im2'),100,100);
dos=ctx.getImageData(0, 0, 300, 300);;
historial.push(dos);
}
function revert(){
historial.pop();
if(historial.length){
ctx.putImageData(historial.pop(), 0, 0);
}else{
inicio();
}
}
onload=inicio;
</script>
Para explorer 8 hay que seguir pensando...