    # File lib/rvg/stretchable.rb, line 137
                def viewbox(x, y, width, height)
                    begin
                        @vbx_x = Float(x)
                        @vbx_y = Float(y)
                        @vbx_width = Float(width)
                        @vbx_height = Float(height)
                    rescue ArgumentError
                        raise ArgumentError, "arguments must be convertable to float (got #{x.class}, #{y.class}, #{width.class}, #{height.class})"
                    end
                    raise(ArgumentError, "viewbox width must be > 0 (#{width} given)") unless width >= 0
                    raise(ArgumentError, "viewbox height must be > 0 (#{height} given)") unless height >= 0

                    # return the user-coordinate space attributes if defined
                    class << self
                      if not defined? @redefined then
                        @redefined = true
                        define_method(:x) { @vbx_x }
                        define_method(:y) { @vbx_y }
                        define_method(:width) { @vbx_width}
                        define_method(:height) { @vbx_height }
                      end
                    end

                    yield(self) if block_given?
                    self
                end