I have a Button Game object (scale 1, 1, 1) and when I attempt to replace it with another prefab, the scale is not retained, despite having the 'Preserve scale' setting ticked in Preferences. The scale is actually huge (67, 67, 67)!
Are you setting the scale before it gets parented to the Canvas? I ask this as it's the same effect as if I put a UI element into the root of the scene by accident and drag it into the Canvas - I get the same huge scale values.
Customer support service by UserEcho