The defaults can be kept in a constant.

However the new defaults that a user sets should be kept in an instance variable of internal app (imo). It is not good to change/alter the values of constants.

These values can then be changed and altered. The per element defaults should probably be kept in another datastructure. If we split this we need an accessor though that returns all the currently defined default styles for the creation of a given element... which might be bothersome. 

I could imagine us having only per element defaults and when global defaults are set it just updates them for every element type... not sure though. Puts more pressure on the write, less on the read and reads are probably more common. 

An educated choice between the 2 would also need a benchmark I guess.