Oh my god, how many of these threads exist? Sasuke has changed. He just isn't completely good yet. It is called gradual character development.
In five kages summit arc, he didn't care about his comrades. Now, he saved Sakura without any ulterior motives. He saved Naruto albeit with ulterior motives. He showed concern when Sai was falling, despite never having a positive encounter with him.
He's motivation has completely changed. He used to fight for the past. It was all he cared about. now, he wants to delete the past. He is fighting for the future.
He has given up revenge. That is HUGE. He told Orochimaru this. Why would he lie to Orochimaru? It's not like he would disapprove or something.
Sasuke is flawed but that doesn't mean that he hasn't changed because he is less flawed. Over time, those remaining flaws will erode away. for example, during the inevatable tnj in Naruto vs. Sasuke