Managed to find a fix, instead of using the index of the column, I used the column name, like so:
If e.Row.DataItem("DueDate") < Date.Now.ToString Then
e.Row.BackColor = Drawing.Color.Red
End If
NOTE: I declared this in RowDataBound, not in RowCreated.
Works perfectly, left this here for anyone else with a similar problem. Indexing doesn't seem very accurate in this instance.