Object not centering
When you select a model and tell it to place the cursor at its center, the cursor does not take into account any modifiers (such as your mirror modifier), and therefore it goes to the center of the vertices you have selected, as seen here:



Then, if you place your origin at the cursor, your mirror modifier will use the origin as your axis point:



So, if your mirror modifier uses the origin as its mirror axis, then all you need to do is place the origin at the point you want to mirror from. This can be done several ways, but the most precise would be to select a single vertex where you want your mirror to occur, and set the cursor to that point (Set cursor to selected):



Then set this point as your origin, the same way as per usual, and your mirror modifier will then use it as the mirror axis:



It is a simple mistake to make, and thankfully an easy one to fix.
Hopefully that helps explain the issue you faced.