I wasn't quite sure what to do about default values for the properties that need them (e.g. step and value). I've moved the default values to the _value and _step declarations.

As for getAttribute(), the min/max/etc. setters already validate the values and will throw away an empty string. Do you want extra validation in prepareForDraw()?