<p>I've been having trouble uploading the TH3DUF_R2 firmware to my CR-10.  I've already successfully flashed the bootloader using my Arduino,  but when I try to upload the bootloader I get this error:</p>

<p><code>avrdude: ser_open(): can't set com-state for "\\.\COM4"</code></p>

<p>Things I've tried:</p>

<ul>
<li>Changing the usb drivers</li>
<li>Changing the baud rate</li>
<li>Using a different computers without any other usb devices</li>
</ul>

<p>My printer is not functional right now with just a bootloader and no firmware, so I'm not really sure where to go from here.</p>

You should not look at the relative dimensional differences, you should be looking at the absolute differences. Multiplying the undersized dimensions in percentage with the cylinder diameter gives you a value of 0.4  mm for each cylinder give or take a few hundreds. So, basically your printer works very consistent it is just suffering from a systematic offset.
Basically, the printing process needs to
adjust the X-Y dimensions to compensate for plastic flow effects. An option or setting in Ultimaker Cura to counteract this is called
```
Horizontal﻿ ﻿Expansio﻿n
```
. Slic3r and Simplify3d have similar settings. In Slic3r it is called
```
XY size compensation
```
.