Frankly, I think your character is just fine. Actually, by keeping your protagonist that way, you can bring something fresh and new to the halls of literature. There are countless authors who think that their main character has to be the greatest of the great, but not many authors make their main character the underdog.
Keep your protagonist the same, but as the story goes on, subtly show how the protagonist remains faithful through all of the mistakes and moral struggles he endures. Remember that not everyone is going to be drawn to the main character - for example, I am someone who is fascinated with villains, and as a result, most of my favorite characters are villains. In the science fiction stories I write, I spend a lot of time developing my antagonists.
I actually was so relieved when I read over your protagonist's description. I was worried that the protagonist would be one of those unrealistically perfect characters, but I was wrong! Trust me, your protagonist is actually very healthy. In the end, if you continue to highlight your character's perseverance, your readers will see the protagonist's true virtue.
And the rest is left up to the readers. If they bond with the protagonist or the side character more, that's up to them. If they bond with the antagonist more, that's up to them. As the author, you can only do so much.
For your purposes, my suggestion would be to keep your protagonist's qualities the same. Believe it or not, your readers will be able to relate to him more.
-Morbid Quill