I'm writing this down because I think I found a bug in Cura 4.7.1. I'm not really sure if it's a bug but it might be. I found it when re-calibrating and retuning my 3D Printer, a Tevo Tornado with its original stock hot end but with BMG dual drive extruder.
When calibrating for extrusion width by printing a 20mm cube in Spiralize Outer Contour mode, I found out that the line width was bigger than what I had set. It was 0.5mm instead of 0.4mm. Based on this result I reprinted with 80% flow rate to compensate the over extrusion. It printed exactly 0.4mm. However, when printing a cube with the same settings, the top and bottom layers had gaps on them.
It got me thinking, maybe the flow rate and the extrusion path in Cura were mismatched. Maybe Cura has extrusion path planned for 0.5mm instead of 0.4mm and that caused my gaps. Therefore, I changed my Cura settings to 0.32mm line width and 100% flow rate. The result was great! The line width was exactly 0.4mm and there wasn't any gaps.
I'm not 100% sure that it was Cura's fault, but I think it worth checking. And, for the firmware, I am pretty sure that the X and Y steps/mm are correct because I have calibrated it carefully. I am not really sure with the extruder steps, since the method I used was dependent on the filament, and filaments are curved due to being rolled. Hence, may not be accurate.