Dynamics are positioned differently depending on stem direction, and horizontal offset is added on copy and paste
Open dynamics offset problem.mscz in 2.0.3. Everything is in its automatic position. Notice that the two dynamics in the first measure are not aligned vertically.
That, right there, is the problematic behavior. MuseScore currently moves dynamics to the left when the note's stem is down, in an effort to center relative to the stem instead of the notehead.
This is well illustrated if you click the note in the bass clef and press [X] a few times—notice that as the stem direction changes, the dynamic jumps left and right:
There doesn't seem to be any reason for this, and it causes problems—aside from the raggedy vertical alignment in a score, extra horizontal offset may get added through copy and paste (see https://musescore.org/en/node/112596), and even on a single note it does not look as pleasing to the eye.
This is in 2.0.3; in current 3.0 nightlies, the only difference is that a large buffer prevents the dynamic from approaching the barline on the left.
Proposed solution: Modify Dynamic::layout() in libmscore/dynamic.cpp so it will just be centered relative to the notehead.