When loading the columns from a file the columns are read in the order they are found in the Columns collection of RadGridView upon saving them.
Setting the DisplayIndex triggers the internal grid logic that ensures the DisplayIndex of each column is correct.
The combination of the above two operations can cause the grid to invalidate the DisplayIndex of columns while deserializing them and thus setting invalid values.
To ensure correct behaviour when deserializing sort the columns by their display order property before returning them in ProvideValue()