I tried having a look at the code myself and I think I narrowed the issue down to this block of code in PartExtensions.cs /// <summary> /// Gets the cost of the part excluding resources. /// </summary> public static double GetCostDry(this Part part) { return part.partInfo.cost - GetResourceCostMax(part) + part.GetModuleCosts(); } /// <summary> /// Gets the cost of the part including maximum resources. /// </summary> public static double GetCostMax(this Part part) { return part.partInfo.cost + part.GetModuleCosts(); } /// <summary> /// Gets the cost of the part including resources. /// </summary> public static double GetCostWet(this Part part) { return part.partInfo.cost - GetResourceCostInverted(part) + part.GetModuleCosts(); } Specifically the call to part.GetModuleCosts() seems to be triggering the bug. Removing that call fixes the issue with the sizing but breaks the cost calculations for parts that have their size changed with TweakScale. So it seems you were right that it was the KSP API doing something weird. The name toggle seems to fix the bug because these functions are called when generating the tooltip, which presumably isn't done when name only is selected. Interestingly the call GetCostWet() in PartSim doesn't cause the problem, nor does turning names only off and generating the tooltip after the part is spawned. It may be possible just to avoid calling this function at part creation. Anyway hopefully you see this before you get to stuck into it and I've saved you some time.