Well, like I said, I knew about this since I started using drawdot 15 years ago, I always thought drawdot with a size bigger than 1 wasn't really meant to draw perfect circle like drawrect -e was, I figured it was an issue after a discussion with Talon and how he did expect perfect circles from it, but he was using greater size than 6.
I don't mind preserving backward compatibility on this, but during the discussion, it has been said that the dot being drawn by drawdot aren't the best.
I think a new switch to get better circle from drawdot using a custom ellipse function would be great, I'll make a suggestion probably, but here is an algo from Talon which does a good job if you want to do it right away:
alias xdrawdot {
; @window color size x y
var %x = 0 , %y = $3 , %d = $calc(3 - 2 * $3)
while (%y >= %x) {
drawline $1-2 1 $calc($4 + %x) $calc($5 + %y) $calc($4 - %x) $calc($5 + %y)
drawline $1-2 1 $calc($4 + %x) $calc($5 - %y) $calc($4 - %x) $calc($5 - %y)
drawline $1-2 1 $calc($4 + %y) $calc($5 + %x) $calc($4 - %y) $calc($5 + %x)
drawline $1-2 1 $calc($4 + %y) $calc($5 - %x) $calc($4 - %y) $calc($5 - %x)
if (%d > 0) { var %y = %y - 1 , %d = $calc(%d + 4 * (%x - %y) + 10) }
else { var %d = $calc(%d + 4 * %x + 6) }
inc %x
}
}
It doesn't even use /drawfill!