Battery level always 42%
Battery contains the chip which provides information to fuel gauge hardware and drivers. Since you have already done that, next is to determine if the problem is with fuel gauge drivers/ software or hardware.

Wipe clean your phone (cache, dalvik and system) and flash stock ROM for your phone. Don't install apps. Switch to safe mode, charge  for about three hours (will certainly top the battery) and if the behaviour is same, then it is NOT OS related (yes, try all this with external SD and SIM removed...doesn't sound logical to do this and I agree but for some unexplained reason I had the experience of weird battery reading with SD card installed and reverting to normal when removed)

If this didn't help,almost certainly hardware related. Time to get the hardware checked and repaired