BUG: Painfully slow iteration
I know this is most probably a known unpolished feature, but here goes nothing.
When you have a stack big enough that it cannot be fit in your inventory cause of the weight.
The game will move 1 item at a time to see how many it can fit, this can be avoided by having a check which you already have but instead of looping until it cannot fit anymore calculating how many you can fit and move those items.
int amount = ((player.MaxWeight - player.Weight) / item.Weight);
amount will be the amount of items that you can transfer to the slot the user wants.