There must be some difference between environments/screens for Surface Automation to work in one but not the other - it is a rabbit hole of investigation you need to look into.
Font smoothing, resolution, color differences (different graphics cards can display different colors), different magnification settings in windows, different zoom settings in an application, different application performance with bad wait stage logic. etc ,etc.
The most robust Surface Automation interfaces will use image searching to find screen element locations and then base clicks/keystrokes upon an offset from that image location. You should also build logic to wait for these images as part of your intelligent waiting logic. You should also use the color tolerance option in the image search object to allow for difference in colors. The Surface Automation training for 4.2/5 details all these techniques.