When you replace the gui with GUI Replacer, it replaces the default guis in the ui folder. Then it reloads the guis so they update their texture without loosing any data it currently contains. This means two things:
1. If you assign a gui the variable "sparta" the value "9001", it will still contain the value "9001".
2. Next restart will still have the gui you chose last time, and due the cursor was not replaced, it will be added now.
I have added the code of replacing the gui, but after massive tests, I found out that after replacing it twice, it always crashed the client, and when it crashed after once, I disabled that feature. Although, it's reachable through a preference.
$Pref::GuiReplace::var::replaceCursor = false;
I don't recommend to enable it, but it does work from time to time.
There's also more preferences in client.cs that you could look over, but it is optimized to prevent any crashes, still be fast as possible.