Does anybody understand the math behind affine transforms? Can you give me a pointer to a good resource that will help me understand it at a deeper level? The transformation matrices are multiplied in the opposite order it seems like they should be: Code: CGAffineTransform transform = CGAffineTransformMakeTranslation(tx, ty); transform = CGAffineTransformScale(transform, sx, sy); self.view.transform = transform; If T is the translation matrix and S is the scale matrix, then each point v is translated as (v x S x T). Shouldn't it be translated as (v x T x S)? I can see by testing some points that the latter produces the wrong result. But why?