Round instead of trunc
diff --git a/src/hb-ot-layout-gpos-private.hh b/src/hb-ot-layout-gpos-private.hh
index e72e7b3..bd72aae 100644
--- a/src/hb-ot-layout-gpos-private.hh
+++ b/src/hb-ot-layout-gpos-private.hh
@@ -103,10 +103,10 @@
     x_scale = context->font->x_scale;
     y_scale = context->font->y_scale;
     /* design units -> fractional pixel */
-    if (format & xPlacement) glyph_pos->x_offset  += _hb_16dot16_mul_trunc (x_scale, *(SHORT*)values++);
-    if (format & yPlacement) glyph_pos->y_offset  += _hb_16dot16_mul_trunc (y_scale, *(SHORT*)values++);
-    if (format & xAdvance)   glyph_pos->x_advance += _hb_16dot16_mul_trunc (x_scale, *(SHORT*)values++);
-    if (format & yAdvance)   glyph_pos->y_advance += _hb_16dot16_mul_trunc (y_scale, *(SHORT*)values++);
+    if (format & xPlacement) glyph_pos->x_offset  += _hb_16dot16_mul_round (x_scale, *(SHORT*)values++);
+    if (format & yPlacement) glyph_pos->y_offset  += _hb_16dot16_mul_round (y_scale, *(SHORT*)values++);
+    if (format & xAdvance)   glyph_pos->x_advance += _hb_16dot16_mul_round (x_scale, *(SHORT*)values++);
+    if (format & yAdvance)   glyph_pos->y_advance += _hb_16dot16_mul_round (y_scale, *(SHORT*)values++);
 
     x_ppem = context->font->x_ppem;
     y_ppem = context->font->y_ppem;
@@ -136,8 +136,8 @@
   inline void get_anchor (hb_ot_layout_context_t *context, hb_codepoint_t glyph_id HB_GNUC_UNUSED,
 			  hb_position_t *x, hb_position_t *y) const
   {
-      *x = _hb_16dot16_mul_trunc (context->font->x_scale, xCoordinate);
-      *y = _hb_16dot16_mul_trunc (context->font->y_scale, yCoordinate);
+      *x = _hb_16dot16_mul_round (context->font->x_scale, xCoordinate);
+      *y = _hb_16dot16_mul_round (context->font->y_scale, yCoordinate);
   }
 
   inline bool sanitize (SANITIZE_ARG_DEF) {
@@ -162,8 +162,8 @@
   {
       /* TODO Contour
        * NOTE only adjust directions with nonzero ppem */
-      *x = _hb_16dot16_mul_trunc (context->font->x_scale, xCoordinate);
-      *y = _hb_16dot16_mul_trunc (context->font->y_scale, yCoordinate);
+      *x = _hb_16dot16_mul_round (context->font->x_scale, xCoordinate);
+      *y = _hb_16dot16_mul_round (context->font->y_scale, yCoordinate);
   }
 
   inline bool sanitize (SANITIZE_ARG_DEF) {
@@ -187,8 +187,8 @@
   inline void get_anchor (hb_ot_layout_context_t *context, hb_codepoint_t glyph_id HB_GNUC_UNUSED,
 			  hb_position_t *x, hb_position_t *y) const
   {
-      *x = _hb_16dot16_mul_trunc (context->font->x_scale, xCoordinate);
-      *y = _hb_16dot16_mul_trunc (context->font->y_scale, yCoordinate);
+      *x = _hb_16dot16_mul_round (context->font->x_scale, xCoordinate);
+      *y = _hb_16dot16_mul_round (context->font->y_scale, yCoordinate);
 
       /* pixel -> fractional pixel */
       if (context->font->x_ppem)