You can experiment with script triggers and global variables to see if you can use a script to reset the cursor in the field and scroll the window.
Get ( activeselectionStart) and Get ( activeSelectionSize ) can tell you what text is selected or the position of the cursor at the time you exit the field.
Set Selection is a script step that can then use such numbers saved in global variables to reposition the cursor or reselect the same selected text and I think that should also scroll the selected text back in to view...
I created a field with a scroll bar and attached two scripts to it. The first on exit captures the selection. The second on entry goes to the captured selected text. It selects the previously selected text perfectly.
Unfortunately it doesn't scroll the text into view...