I agree that it works in the context. I do think you should consider specifying. Good or bad are far too general adjectives. The use of 'incompetent', 'corrupt', etc. would be better suited in your case.
Although your statement is illogical, I understand what you are saying.
I can't see why his sentence is illogical or wrong.
The candidate isn't better than the previous one. He's just less bad.It means such candidate is not as bad as the previous one.
A candidate can be bad, as can someone else in the world, corrupt, incompetent, arrogant, mean, selfish, demanding, greedy, hypocritical, insensitive, sexist, rude, grumpy, manipulative, stingy, womanising, and so on... endless list.
So, my point is, I mean, my question is... why is it illogical?