Ignore me, I'm an idiot, 5 mins more reading and I could've avoided posting here. For anyone who's remotely interested, it's because according to MSDN "Normally, the system sizes a list box so that the list box does not display partial items." so adding LBS_NOINTEGRALHEIGHT as the list-box style sorted this.....