TODO: fix rotate, order of multiplication (zooming while translating)