The transformation is not really "recalculated". Each item has an internal transformation matrix that is used to transform it. If you add a new transformation then it modifies the transformation matrix and then the transformation is applied to the item using the set transform origin. Thus changing the origin affects all transformations as all operate on the same transformation matrix. A solution is to apply a translate operation to the item which moves the origin to where you want it to be, then apply the actual transformation you want to perform and then another translate operation that will reverse the effect of the first one. Alternatively you can probably set your operation on a separate transformation matrix and then multiply the two matrices.