diff --git a/src/traces/pie/plot.js b/src/traces/pie/plot.js
index b8505618ef9..7f9096e48bf 100644
--- a/src/traces/pie/plot.js
+++ b/src/traces/pie/plot.js
@@ -19,6 +19,7 @@ var svgTextUtils = require('../../lib/svg_text_utils');
 var uniformText = require('../bar/uniform_text');
 var recordMinTextSize = uniformText.recordMinTextSize;
 var clearMinTextSize = uniformText.clearMinTextSize;
+var TEXTPAD = require('../bar/constants').TEXTPAD;
 
 var helpers = require('./helpers');
 var eventData = require('./event_data');
@@ -669,6 +670,8 @@ function isCrossing(pt, angle) {
 }
 
 function calcRadTransform(textBB, r, ring, halfAngle, midAngle) {
+    r = Math.max(0, r - 2 * TEXTPAD);
+
     // max size if text is rotated radially
     var a = textBB.width / textBB.height;
     var s = calcMaxHalfSize(a, halfAngle, r, ring);
@@ -680,6 +683,8 @@ function calcRadTransform(textBB, r, ring, halfAngle, midAngle) {
 }
 
 function calcTanTransform(textBB, r, ring, halfAngle, midAngle) {
+    r = Math.max(0, r - 2 * TEXTPAD);
+
     // max size if text is rotated tangentially
     var a = textBB.height / textBB.width;
     var s = calcMaxHalfSize(a, halfAngle, r, ring);
@@ -1133,11 +1138,7 @@ function computeTransform(
     transform,  // inout
     textBB      // in
 ) {
-    var rotate = transform.rotate;
-    var scale = transform.scale;
-    if(scale > 1) scale = 1;
-
-    var a = rotate * Math.PI / 180;
+    var a = transform.rotate * Math.PI / 180;
     var cosA = Math.cos(a);
     var sinA = Math.sin(a);
     var midX = (textBB.left + textBB.right) / 2;
diff --git a/test/image/baselines/display-text_zero-number.png b/test/image/baselines/display-text_zero-number.png
index 07fd3647934..eb6677de9c8 100644
Binary files a/test/image/baselines/display-text_zero-number.png and b/test/image/baselines/display-text_zero-number.png differ
diff --git a/test/image/baselines/funnelarea_pie_colorways.png b/test/image/baselines/funnelarea_pie_colorways.png
index 7261a92d424..887c40857ca 100644
Binary files a/test/image/baselines/funnelarea_pie_colorways.png and b/test/image/baselines/funnelarea_pie_colorways.png differ
diff --git a/test/image/baselines/funnelarea_with_other_traces.png b/test/image/baselines/funnelarea_with_other_traces.png
index 0e9d6d123fe..45a7bb56961 100644
Binary files a/test/image/baselines/funnelarea_with_other_traces.png and b/test/image/baselines/funnelarea_with_other_traces.png differ
diff --git a/test/image/baselines/legend-constant-itemsizing.png b/test/image/baselines/legend-constant-itemsizing.png
index 1b662b7081f..9d6232b4386 100644
Binary files a/test/image/baselines/legend-constant-itemsizing.png and b/test/image/baselines/legend-constant-itemsizing.png differ
diff --git a/test/image/baselines/mathjax.png b/test/image/baselines/mathjax.png
index 1c85c4d8dd2..c9387d7969d 100644
Binary files a/test/image/baselines/mathjax.png and b/test/image/baselines/mathjax.png differ
diff --git a/test/image/baselines/pie_automargin.png b/test/image/baselines/pie_automargin.png
index b15533e1074..24f9c14e8fc 100644
Binary files a/test/image/baselines/pie_automargin.png and b/test/image/baselines/pie_automargin.png differ
diff --git a/test/image/baselines/pie_fonts.png b/test/image/baselines/pie_fonts.png
index 03560a12730..c1e2422d8c8 100644
Binary files a/test/image/baselines/pie_fonts.png and b/test/image/baselines/pie_fonts.png differ
diff --git a/test/image/baselines/pie_inside-text-orientation.png b/test/image/baselines/pie_inside-text-orientation.png
index 64af61e6e86..dc36a274723 100644
Binary files a/test/image/baselines/pie_inside-text-orientation.png and b/test/image/baselines/pie_inside-text-orientation.png differ
diff --git a/test/image/baselines/pie_scale_textpos_hideslices.png b/test/image/baselines/pie_scale_textpos_hideslices.png
index be3812b567b..780a00437a7 100644
Binary files a/test/image/baselines/pie_scale_textpos_hideslices.png and b/test/image/baselines/pie_scale_textpos_hideslices.png differ
diff --git a/test/image/baselines/pie_style_arrays.png b/test/image/baselines/pie_style_arrays.png
index 2bca68676f3..d12234b4590 100644
Binary files a/test/image/baselines/pie_style_arrays.png and b/test/image/baselines/pie_style_arrays.png differ
diff --git a/test/image/baselines/pie_textpad_radial.png b/test/image/baselines/pie_textpad_radial.png
new file mode 100644
index 00000000000..4f0686bc3e7
Binary files /dev/null and b/test/image/baselines/pie_textpad_radial.png differ
diff --git a/test/image/baselines/pie_textpad_tangential.png b/test/image/baselines/pie_textpad_tangential.png
new file mode 100644
index 00000000000..fa9b8ed4658
Binary files /dev/null and b/test/image/baselines/pie_textpad_tangential.png differ
diff --git a/test/image/baselines/sunburst_branchvalues-total-almost-equal.png b/test/image/baselines/sunburst_branchvalues-total-almost-equal.png
index e571e95608b..f553714dcfa 100644
Binary files a/test/image/baselines/sunburst_branchvalues-total-almost-equal.png and b/test/image/baselines/sunburst_branchvalues-total-almost-equal.png differ
diff --git a/test/image/baselines/sunburst_coffee.png b/test/image/baselines/sunburst_coffee.png
index 9299c4e1346..0f69852a357 100644
Binary files a/test/image/baselines/sunburst_coffee.png and b/test/image/baselines/sunburst_coffee.png differ
diff --git a/test/image/baselines/sunburst_count_branches.png b/test/image/baselines/sunburst_count_branches.png
index a15651fe553..65ab9fa4534 100644
Binary files a/test/image/baselines/sunburst_count_branches.png and b/test/image/baselines/sunburst_count_branches.png differ
diff --git a/test/image/baselines/sunburst_flare.png b/test/image/baselines/sunburst_flare.png
index 13b69ce29a6..dd8484c79bc 100644
Binary files a/test/image/baselines/sunburst_flare.png and b/test/image/baselines/sunburst_flare.png differ
diff --git a/test/image/baselines/sunburst_inside-text-orientation.png b/test/image/baselines/sunburst_inside-text-orientation.png
index a77ba3102ea..fe4b1cf7680 100644
Binary files a/test/image/baselines/sunburst_inside-text-orientation.png and b/test/image/baselines/sunburst_inside-text-orientation.png differ
diff --git a/test/image/baselines/sunburst_inside-text-orientation_clock.png b/test/image/baselines/sunburst_inside-text-orientation_clock.png
index 28ab975ef98..1216ae00c05 100644
Binary files a/test/image/baselines/sunburst_inside-text-orientation_clock.png and b/test/image/baselines/sunburst_inside-text-orientation_clock.png differ
diff --git a/test/image/baselines/sunburst_packages_colorscale_novalue.png b/test/image/baselines/sunburst_packages_colorscale_novalue.png
index 02e7bcbbbc7..b88e9331871 100644
Binary files a/test/image/baselines/sunburst_packages_colorscale_novalue.png and b/test/image/baselines/sunburst_packages_colorscale_novalue.png differ
diff --git a/test/image/baselines/sunburst_textfit.png b/test/image/baselines/sunburst_textfit.png
index 495029d2378..9796c4a1dc8 100644
Binary files a/test/image/baselines/sunburst_textfit.png and b/test/image/baselines/sunburst_textfit.png differ
diff --git a/test/image/baselines/sunburst_textpad_radial.png b/test/image/baselines/sunburst_textpad_radial.png
new file mode 100644
index 00000000000..cad6d7ba2b6
Binary files /dev/null and b/test/image/baselines/sunburst_textpad_radial.png differ
diff --git a/test/image/baselines/sunburst_textpad_tangential.png b/test/image/baselines/sunburst_textpad_tangential.png
new file mode 100644
index 00000000000..24a4fdcbd37
Binary files /dev/null and b/test/image/baselines/sunburst_textpad_tangential.png differ
diff --git a/test/image/baselines/sunburst_values.png b/test/image/baselines/sunburst_values.png
index 8e7f8b6f8da..fc108c99f02 100644
Binary files a/test/image/baselines/sunburst_values.png and b/test/image/baselines/sunburst_values.png differ
diff --git a/test/image/baselines/sunburst_values_colorscale.png b/test/image/baselines/sunburst_values_colorscale.png
index 94d1e7e69e4..e61bd3e6af7 100644
Binary files a/test/image/baselines/sunburst_values_colorscale.png and b/test/image/baselines/sunburst_values_colorscale.png differ
diff --git a/test/image/baselines/sunburst_with-without_values.png b/test/image/baselines/sunburst_with-without_values.png
index a00afc950f4..bd5bd3e0ea4 100644
Binary files a/test/image/baselines/sunburst_with-without_values.png and b/test/image/baselines/sunburst_with-without_values.png differ
diff --git a/test/image/baselines/texttemplate.png b/test/image/baselines/texttemplate.png
index a1302aca93c..5daa2623d55 100644
Binary files a/test/image/baselines/texttemplate.png and b/test/image/baselines/texttemplate.png differ
diff --git a/test/image/baselines/treemap_level-depth.png b/test/image/baselines/treemap_level-depth.png
index 15ba3e01597..fcc133c86d8 100644
Binary files a/test/image/baselines/treemap_level-depth.png and b/test/image/baselines/treemap_level-depth.png differ
diff --git a/test/image/baselines/treemap_sunburst_marker_colors.png b/test/image/baselines/treemap_sunburst_marker_colors.png
index ab85b17e709..acd94d8651f 100644
Binary files a/test/image/baselines/treemap_sunburst_marker_colors.png and b/test/image/baselines/treemap_sunburst_marker_colors.png differ
diff --git a/test/image/baselines/uniformtext_pie_16_auto.png b/test/image/baselines/uniformtext_pie_16_auto.png
index 22277b46af9..56efde94e13 100644
Binary files a/test/image/baselines/uniformtext_pie_16_auto.png and b/test/image/baselines/uniformtext_pie_16_auto.png differ
diff --git a/test/image/baselines/uniformtext_pie_8_horizontal.png b/test/image/baselines/uniformtext_pie_8_horizontal.png
index 8847a079d5f..9ee4bdb12bb 100644
Binary files a/test/image/baselines/uniformtext_pie_8_horizontal.png and b/test/image/baselines/uniformtext_pie_8_horizontal.png differ
diff --git a/test/image/baselines/uniformtext_pie_8_horizontal_center.png b/test/image/baselines/uniformtext_pie_8_horizontal_center.png
index 41e1e7af0ca..1cd2a3b272d 100644
Binary files a/test/image/baselines/uniformtext_pie_8_horizontal_center.png and b/test/image/baselines/uniformtext_pie_8_horizontal_center.png differ
diff --git a/test/image/baselines/uniformtext_pie_8_radial.png b/test/image/baselines/uniformtext_pie_8_radial.png
index 67ab4369d93..545fe12a54b 100644
Binary files a/test/image/baselines/uniformtext_pie_8_radial.png and b/test/image/baselines/uniformtext_pie_8_radial.png differ
diff --git a/test/image/baselines/uniformtext_pie_8_tangential.png b/test/image/baselines/uniformtext_pie_8_tangential.png
index d8b2075be3b..718ee822355 100644
Binary files a/test/image/baselines/uniformtext_pie_8_tangential.png and b/test/image/baselines/uniformtext_pie_8_tangential.png differ
diff --git a/test/image/baselines/uniformtext_pie_inside-text-orientation.png b/test/image/baselines/uniformtext_pie_inside-text-orientation.png
index a4b138c519e..a61ef348ff4 100644
Binary files a/test/image/baselines/uniformtext_pie_inside-text-orientation.png and b/test/image/baselines/uniformtext_pie_inside-text-orientation.png differ
diff --git a/test/image/baselines/uniformtext_sunburst_inside-text-orientation.png b/test/image/baselines/uniformtext_sunburst_inside-text-orientation.png
index fa4725ab038..64bedfcf2d8 100644
Binary files a/test/image/baselines/uniformtext_sunburst_inside-text-orientation.png and b/test/image/baselines/uniformtext_sunburst_inside-text-orientation.png differ
diff --git a/test/image/mocks/pie_fonts.json b/test/image/mocks/pie_fonts.json
index 2961f3ed035..8a292d98713 100644
--- a/test/image/mocks/pie_fonts.json
+++ b/test/image/mocks/pie_fonts.json
@@ -9,6 +9,7 @@
         "inherit from<br><b>global...</b>",
         "font"
       ],
+      "textposition": ["outside", "inside"],
       "type": "pie",
       "domain": {
         "x": [0, 0.4],
diff --git a/test/image/mocks/pie_textpad_radial.json b/test/image/mocks/pie_textpad_radial.json
new file mode 100644
index 00000000000..cf256cf3716
--- /dev/null
+++ b/test/image/mocks/pie_textpad_radial.json
@@ -0,0 +1,46 @@
+{
+    "data": [
+        {
+            "type": "pie",
+            "hole": 0.5,
+            "labels": [
+                "a",
+                "b",
+                "c",
+                "d"
+            ],
+            "values": [
+                20,
+                10,
+                2,
+                1
+            ],
+            "textposition": "inside",
+            "insidetextorientation": "radial",
+            "marker": {
+                "colors": [
+                    "pink",
+                    "lightgreen",
+                    "skyblue",
+                    "orange"
+                ],
+                "line": {
+                    "width": 3,
+                    "color": [
+                        "red",
+                        "green",
+                        "blue",
+                        "grey"
+                    ]
+                }
+            }
+        }
+    ],
+    "layout": {
+        "width": 300,
+        "height": 300,
+        "title": {
+            "text": "should provide some pad<br>before fiting & printing text"
+        }
+    }
+}
diff --git a/test/image/mocks/pie_textpad_tangential.json b/test/image/mocks/pie_textpad_tangential.json
new file mode 100644
index 00000000000..e9ae06243c8
--- /dev/null
+++ b/test/image/mocks/pie_textpad_tangential.json
@@ -0,0 +1,46 @@
+{
+    "data": [
+        {
+            "type": "pie",
+            "hole": 0.5,
+            "labels": [
+                "a",
+                "b",
+                "c",
+                "d"
+            ],
+            "values": [
+                20,
+                10,
+                2,
+                1
+            ],
+            "textposition": "inside",
+            "insidetextorientation": "tangential",
+            "marker": {
+                "colors": [
+                    "pink",
+                    "lightgreen",
+                    "skyblue",
+                    "orange"
+                ],
+                "line": {
+                    "width": 3,
+                    "color": [
+                        "red",
+                        "green",
+                        "blue",
+                        "grey"
+                    ]
+                }
+            }
+        }
+    ],
+    "layout": {
+        "width": 300,
+        "height": 300,
+        "title": {
+            "text": "should provide some pad<br>before fiting & printing text"
+        }
+    }
+}
diff --git a/test/image/mocks/sunburst_textpad_radial.json b/test/image/mocks/sunburst_textpad_radial.json
new file mode 100644
index 00000000000..b45ec4977e9
--- /dev/null
+++ b/test/image/mocks/sunburst_textpad_radial.json
@@ -0,0 +1,52 @@
+{
+    "data": [
+        {
+            "type": "sunburst",
+            "parents": [
+                "",
+                "",
+                "",
+                "",
+                "Alpha",
+                "Bravo",
+                "Charlie",
+                "Delta"
+            ],
+            "labels": [
+                "Alpha",
+                "Bravo",
+                "Charlie",
+                "Delta",
+                "Echo",
+                "Foxtrot",
+                "Golf",
+                "Hotel"
+            ],
+            "branchvalues": "total",
+            "values": [
+                20,
+                10,
+                2,
+                1,
+                20,
+                10,
+                2,
+                1
+            ],
+            "textposition": "inside",
+            "insidetextorientation": "radial",
+            "marker": {
+                "line": {
+                    "width": 3
+                }
+            }
+        }
+    ],
+    "layout": {
+        "width": 300,
+        "height": 300,
+        "title": {
+            "text": "should provide some pad<br>before fiting & printing text"
+        }
+    }
+}
diff --git a/test/image/mocks/sunburst_textpad_tangential.json b/test/image/mocks/sunburst_textpad_tangential.json
new file mode 100644
index 00000000000..b6c3095ea46
--- /dev/null
+++ b/test/image/mocks/sunburst_textpad_tangential.json
@@ -0,0 +1,52 @@
+{
+    "data": [
+        {
+            "type": "sunburst",
+            "parents": [
+                "",
+                "",
+                "",
+                "",
+                "Alpha",
+                "Bravo",
+                "Charlie",
+                "Delta"
+            ],
+            "labels": [
+                "Alpha",
+                "Bravo",
+                "Charlie",
+                "Delta",
+                "Echo",
+                "Foxtrot",
+                "Golf",
+                "Hotel"
+            ],
+            "branchvalues": "total",
+            "values": [
+                20,
+                10,
+                2,
+                1,
+                20,
+                10,
+                2,
+                1
+            ],
+            "textposition": "inside",
+            "insidetextorientation": "tangential",
+            "marker": {
+                "line": {
+                    "width": 3
+                }
+            }
+        }
+    ],
+    "layout": {
+        "width": 300,
+        "height": 300,
+        "title": {
+            "text": "should provide some pad<br>before fiting & printing text"
+        }
+    }
+}
diff --git a/test/jasmine/tests/pie_test.js b/test/jasmine/tests/pie_test.js
index 61ea09fde3c..0417c1a67d9 100644
--- a/test/jasmine/tests/pie_test.js
+++ b/test/jasmine/tests/pie_test.js
@@ -2010,7 +2010,7 @@ describe('pie uniformtext', function() {
         Plotly.plot(gd, fig)
         .then(assertTextSizes('without uniformtext', {
             fontsizes: [12, 12, 12, 12, 12, 12, 12, 12],
-            scales: [1, 1, 1, 1, 1, 1, 1, 0.58],
+            scales: [1, 1, 1, 1, 1, 1, 1, 0.52],
         }))
         .then(function() {
             fig.layout.uniformtext = {mode: 'hide'}; // default with minsize=0
@@ -2018,7 +2018,7 @@ describe('pie uniformtext', function() {
         })
         .then(assertTextSizes('using mode: "hide"', {
             fontsizes: [12, 12, 12, 12, 12, 12, 12, 12],
-            scales: [0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58],
+            scales: [0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52],
         }))
         .then(function() {
             fig.layout.uniformtext.minsize = 9; // set a minsize less than trace font size
@@ -2058,7 +2058,7 @@ describe('pie uniformtext', function() {
         })
         .then(assertTextSizes('clear uniformtext', {
             fontsizes: [12, 12, 12, 12, 12, 12, 12, 12],
-            scales: [1, 1, 1, 1, 1, 1, 1, 0.58],
+            scales: [1, 1, 1, 1, 1, 1, 1, 0.52],
         }))
         .catch(failTest)
         .then(done);
diff --git a/test/jasmine/tests/sunburst_test.js b/test/jasmine/tests/sunburst_test.js
index 9c35d5e51de..d78ee444c64 100644
--- a/test/jasmine/tests/sunburst_test.js
+++ b/test/jasmine/tests/sunburst_test.js
@@ -1975,7 +1975,7 @@ describe('sunburst inside text orientation', function() {
             return Plotly.react(gd, fig);
         })
         .then(assertTextRotations('using "tangential"', {
-            rotations: [0, 0, -42, -78]
+            rotations: [0, 30, -42, -78]
         }))
         .then(function() {
             fig.data[0].insidetextorientation = 'auto';
@@ -2060,7 +2060,7 @@ describe('sunburst uniformtext', function() {
         Plotly.plot(gd, fig)
         .then(assertTextSizes('without uniformtext', {
             fontsizes: [12, 12, 12, 12, 12, 12, 12, 12, 12, 12],
-            scales: [1, 1, 1, 1, 1, 1, 1, 1, 1, 0.58],
+            scales: [1, 1, 1, 1, 1, 1, 1, 1, 1, 0.52],
         }))
         .then(function() {
             fig.layout.uniformtext = {mode: 'hide'}; // default with minsize=0
@@ -2068,7 +2068,7 @@ describe('sunburst uniformtext', function() {
         })
         .then(assertTextSizes('using mode: "hide"', {
             fontsizes: [12, 12, 12, 12, 12, 12, 12, 12, 12, 12],
-            scales: [0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58],
+            scales: [0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52],
         }))
         .then(function() {
             fig.layout.uniformtext.minsize = 9; // set a minsize less than trace font size
@@ -2108,7 +2108,7 @@ describe('sunburst uniformtext', function() {
         })
         .then(assertTextSizes('clear uniformtext', {
             fontsizes: [12, 12, 12, 12, 12, 12, 12, 12, 12, 12],
-            scales: [1, 1, 1, 1, 1, 1, 1, 1, 1, 0.58],
+            scales: [1, 1, 1, 1, 1, 1, 1, 1, 1, 0.52],
         }))
         .catch(failTest)
         .then(done);