The point is not the creation of a theme. That is easy. And editing is too. The problem is that you need to check the whole system and get rid of all the constants and replace them by references to symbolic values in the application theme. There is the value. For example CheckBoxExample>>defaultSpec ^ { #ContainerModel. #add:. { self topSpec. #layout:. #(#SpecLayoutFrame bottomFraction: 0 bottomOffset: 20) }. #add:. {{#model . #container } . #layout: . #(#SpecLayoutFrame topOffset: 22) } } the values 20 and 22 need to be replaced. They are dependent on at least the font size. There are lots of these, e.g. CredentialEditor class >>defaultSpec <sepc: #default> ^ SpecLayout composed newColumn: [ :col | col newRow: [ :r | r add: #usernameLabel width: 80; add: #username ] height: self inputTextHeight; newRow: [ :r | r add: #passwordLabel width: 80; add: #password ] height: self inputTextHeight + 4; newRow: [ :r | r add: #showPasswordWidget width: 120; newColumn: [ :c | ] ] height: self inputTextHeight + 4; newRow: [ :r | ] ]; yourself That <sepc: #default> looks like a typo btw. These values are often composites, something like textSize+2*textLineVerticalSeparation. Coming up with good symbolic names is not trivial either. Stephan