 
     div_style = {
       'position': 'absolute'
-      'left': "#{sx + x_rect_offset}px"
-      'top': "#{sy + y_rect_offset}px"
+      'left': "#{sx + bbox_dims[0]}px"
+      'top': "#{sy + bbox_dims[1]}px"
       'color': "#{@visuals.text.text_color.value()}"
       'opacity': "#{@visuals.text.text_alpha.value()}"
-      'font-size': "#{@visuals.text.text_font_size.value()}"
-      'font-family': "#{@visuals.text.text_font.value()}"
-      'background-color': "#{@visuals.background_fill.color_value()}"
-      'transform': "rotate(#{angle}rad)"
+      'font': "#{@visuals.text.font_value()}"
       'line-height': "normal" # needed to prevent ipynb css override
       }
 
-    switch @visuals.text.text_font_style.value()
-      when "bold" then _.extend(div_style, {'font-weight': "bold"})
-      when "italic" then _.extend(div_style, {'font_style': "italic"})
+    if angle
+      _.extend(div_style, {
+        'transform': "rotate(#{angle}rad)"
+        })
 
     if @visuals.background_fill.doit
       _.extend(div_style, {

      vy = @ymapper.v_map_to_target(@_y)
    else
      vy = @_y.slice(0) # make deep copy to not mutate

    sy = @canvas.v_vy_to_sy(vy)

    return [sx, sy]

                   .css(div_style)
                   .show()

class LabelSet extends TextAnnotation.Model
  default_view: LabelSetView

  type: 'Label'
