---/Hermione wasn’t a sight for sore-eyes. She used to be, but she had changed…somehow./---
Okay, apparently you aren't clear on the meaning of the phrase 'a sight for sore eyes' because it doesn't fit here and, if it did, it would still mean pretty much the opposite of what you were trying to say.
Saying that someone is 'a sight for sore eyes' typically means that you are glad to see them, that the sight of them is literally soothing to the eye (which doesn't fit at all). Somewhat less frequently it is used to indicate someone is attractive, but that's not what Ron was thinking.
Here, Ron is saying that Hermione didn't used to look very good, but she looks more attractive now. However, the way you used /'a sight for sore eyes'/, what you actually ended up writing was that Hermione DID used to look good, but that she is less attractive now.
Clearly that makes no sense.
Replacing the "wasn't" with "was" doesn't fix it either, because the phrase just doesn't make sense here.
You'd be better off removing it and just saying something like, "Hermione wasn’t hard on the eyes. She used to be, but she had changed…somehow."
It might not be too fancy or anything, but it gets the correct point across without forcing the reader to go back and mentally correct your mistake (or worse yet, teaching the less... 'aware' reader an improper usage of the phrase).