Create a copy constructor for colors. Then do it.
Colors objColors = new Colors((Colors)Session["Colors"]);
In the new constructor, just copy the values you need and do other things related to the constructor.
What happens in your code is that you get a pointer Colors. Session [ "Colors" ] objColors , , , . Colors Sparkin , objColors Session [ "Colors" ].
edit: :
public Colors(Colors otherColors)
{
this.privateVar1 = otherColors.privateVar1;
this.publicVar2 = otherColors.publicVar2;
this.Init();
}