The solution to this problem is to have them change into people you hate less. That's right, the bane of author's everywhere, CHARACTER DEVELOPMENT! Challenge them emotionally, physically, or morally until they stop being shitty.
As an elaboration to this, try to create consequences to the challenges. It's cheap to do this, but show them LOSING. I'm not saying loss is the one way to achieving realistic character development but all too many times I've seen the Shounen troupe being played out solely because the author keeps throwing challenges at the character and said character just... brushes it off?
Really? After all those fights and dilemmas, the character just remains as such? Experience doesn't translate to development. Just because a character had gone through something doesn't mean said character has gone through development. You're not moving the character forward; you're just stacking the character higher. If that's the direction you want to take the character's development towards, then all the more power to you, but lest I remind you; it doesn't matter how high you build your character, they're still standing on square one, only with some altitude.
And as I said, loss isn't a one-way ticket to achieving development, but it's an effective one. It essentially shows an actual weakness, or a crutch for the character. And I don't mean just losing a sword fight or a battle of wits either. You beat the absolute shit out of your character through his principles. Show the antithesis to his ideals and MUSH THEM into his face like a cream pie. Utterly demolish his world view, and make him climb back out a better man; that's what I meant by loss. And don't just make the guy brush it off like "oh fuck, that happened." Show some consequences, for God's sake. He just got his mental ass kicked to oblivion and you're telling me that all he gained from it was some internal EXP points? Make changes to his behaviour, adjust his philosophy according to his experiences; that's what consequences mean.
On the flip side, don't do just constantly beat the fuck out of your character. Evangelion is a revered franchise, yes, but Shinji isn't treated as a paragon of character development; he's just part of the symbolism within the story. Constant loss doesn't reinforce anything if you don't let your character prove themselves with Ws. (Unless the loss, in regards to Evangelion, reinforces the theme.) That's character dynamism (no that term doesn't exist I made it up don't look for it). You want to have dynamic for your character to show that they're believable people. There's wins and losses, and you don't get all of each. Reinforce your character through their victories, and build them through their defeats. It not only helps your character but helps with your world-building as well. One of the worst things to happen to a story is when the world feels to serve the character, rather than a place where the character simply inhabits. If the former is what you want to achieve, then go for it. To the other 80%, a believable world is one where the world is simply indifferent to the character's journey. Allow me to elaborate:
I don't mean indifferent as in "lacking consequences". I meant that as within your writing, especially if you're tackling in an omnipresent and/or third-person perspective. I don't know how this affects you guys, but for me, the best world building is one where victory isn't glorified, or loss isn't lingered on in dread heavily. Of course, if your character wins or loses, it will affect how the world. I'm speaking in terms of tone and language (as stated, if you're writing in omnipresent and/or third-person perspective). To truly sell a character's journey, let the reader themselves make the conclusion on whether this truly was a victory, or a hollow prize; a loss, or simply a taken risk. Don't tell your readers how they should feel about a character's action, instead, focus on the character's action ONLY, and if you truly want to write emotions, do it from a singular character's perspective, and make sure you have something to contrast it. Present different opinions and perspective for the character's actions and developments through the side characters; it not only reinforces the world as its own, seperate beast with different folks inhabiting it, it also welcomes differing ideas towards how the character should be perceived.
Take Eren from AOT (before 138). Throughout the story, Iyasama showed both triumph AND defeat through multiple perspectives of the many different characters. Their losses and wins weren't condemned nor were they exalted. Iyasama simply showed them as they were, and presented the character's reactions towards it all. He showed the motivation and the reasoning for both action and reaction. The consequences were simply the aftermath of everyone's action. It made sense throughout, and left the moral and philosophical justification up to the readers' interpretation.
Don't just let your character win with no effort, nor relentlessly beat them down without a moment for personal triumph; show dynamic to their experiences and never shy away from its consequences. Make sure your writing reinforces the objectivity of their actions, and let the readers form their subjective opinions upon it all. That, to me, is how you best tackle character development.