add toString()
avoid conversions to and from pixels as suggested by emux