This is a year later but I wanted to propose a solution I came across online to this problem. Other solutions here have proposed math calculations to "get around" this issue, but there is actually a solution. (Kinda) Basically, from my understanding, regardless of what you set the pivot/orient_type to, in EDIT mode Blender will always perform that transformation as **Median Point**. What you want to do is override the context, so that it performs the transformation over the cursor (or your specified pivot) instead of this default median point. [Source of where I first came across this solution][1] Credit to [Garrett][2]: Overriding the context can be done like this: ```python def get_override(area_type, region_type): for area in bpy.context.screen.areas: if area.type == area_type: for region in area.regions: if region.type == region_type: override = {'area': area, 'region': region} return override #error message if the area or region wasn't found raise RuntimeError("Wasn't able to find", region_type," in area ", area_type, "\n Make sure it's open while executing script.") #we need to override the context of our operator override = get_override( 'VIEW_3D', 'WINDOW' ) #rotate about the X-axis by 45 degrees bpy.ops.transform.rotate(override, value=6.283/8, axis=(1,0,0)) ``` Then, whatever your transformation is, pass in override as the first argument: ```python bpy.ops.transform.resize(override,value=(0.95, 0.95, 0.95)) ``` [1]: https://blenderartists.org/t/how-to-bpy-ops-transform-resize-in-edit-mode-using-pivot/560381 [2]: https://blender.stackexchange.com/questions/6969/rotate-object-around-cursor-with-python