Added in non-uniform scaling