pos[0]/[1] are signed while pos[2] is unsigned in 2D transform