Вам нужно использовать стек, в который вы нажимаете и извлекаете текущую матрицу преобразования.
def calculateTransformRecursive(self):
pushGlobalTransform();
self.calculateAndStoreGlobalTransform();
for node in self.nodes:
node.calculateTransformRecursive();
popGlobalTransform();
Таким образом, каждый узел имеет глобальное преобразование во время рисования, и нет необходимости «отменять» преобразования при переходе вверх по дереву.