For general fixed-point scaling problem, If I want to scale twice about a fixed point (x, y), I need to first translate the object so that fixed point coincides with the origin, then do the scaling and then translate the object back to its position.
In the books, the matrix operation for this is given as
|1 0 x| |s 0 0| |1 0 -x| |0 1 y|*|0 s 0|*|0 1 -y| |0 0 1| |0 0 1| |0 0 1|
and my doubt is, why in the first matrix, we have used x, y? Don't we need -x, -y since we already are at some fixed point x, y and we want to shift that point to 0,0 and so we probably need to translate back by x, y ?