I'm afraid that I have found that confronting things head on and dealing with them honestly is NOT an effective way to work. It is the way I am, but so many colleagues are not honest. I realised this years ago when there was an upcoming promotion at work. 3 of us applied for it. One was the favourite and was in the bosses pocket. She had several private meetings with him and was tipped for the promotion. I grumbled to a colleague about this and lo and behold, my comment was passed on as gossip (this was not my intention, I was just having a chat). The gossip obviously reached management and they clearly decided that they couldn't be seen to show favouritism and she didn't get the promotion (I didn't either, BUT the person that did won it on merit, which was OK with me).
Same thing happened again where I work now. One employee was a back stabber. Constantly feeding back to management about other employees. One of whom broke under the pressure, had a breakdown and probably won't return to work. This time, I talked to another colleague, passing on the 'other side' about the back stabber and also letting the colleague know how the BS was not performing well (missing shifts, acting inappropriately). Lo and behold, the BS was sacked after 6 months. To be honest, I thought he was getting away with it and was just keeping my head down, but then... he was gone.
Let me add, I don't like working this way. I would much rather work in a meritocracy and as part of a good team, but unfortunately, it's a dog eat dog world.