 
     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, {

  @coords [['x', 'y']]

  @define {
      # x:            [ p.NumberSpec,                     ]
      x_units:      [ p.SpatialUnits, 'data'            ]
      # y:            [ p.NumberSpec,                     ]
      y_units:      [ p.SpatialUnits, 'data'            ]
      text:         [ p.StringSpec,   { field: "text" } ]
      angle:        [ p.AngleSpec,    0                 ]

        @set_data(@mget('source'))
        @plot_view.request_render())

  _map_data: () ->
    if @mget('x_units') == "data"
      vx = @xmapper.v_map_to_target(@_x)
