Does this reasoning path seem logical? If so, how can I fix this problem completely from a software side, I'd like to avoid a MAX232 or the like if at all possible.
I (and this is just me) think you're better off just getting a MAX232 or DS275 (?).
That being said, you could use just a plain ol' transistor (or MOSFET) to invert your signal coming out of the PIC.
Bookmarks