The elements of a domain are always sorted in alphabetical order of the translation. If you want to sort based on the database value, you need to create an expression column (hidden and sorted). This will only work for the 'default sorting'. If you sort on the displayed column, it will still sort alphabetical.
Another disadvantage of the work around is, that you need to specify an expression column for each table. Take for example a domain 'calendar_month' with elements: January (db-value=1), February (db-value=2) etc.
It would be better to specify this once (domain).