Почему канвас уходит к последнему элементу?
Если на странице нарисовано два canvas, то где-то есть два объекта canvas. Ты же пытаешься один объект нарисовать дважды, так нельзя. Создай два объекта и рисуй их.
Нашел решение тут stackoverflow.com/questions/3318565/any-way-to-clo...
Конечно не так шустро работает, но это лучше чем toDataUrl();