canvas/data: fix #length
canvas: support creating a canvas from a canvas
canvas: fix #width and #height