set width and height first to ensure they don't break gradients and to ensure left, top etc are applied correctly