Here is my test code comparing the 2 Methods with just one color. Over 2 times slower but not 10 or 1000 times...

`_TITLE "Circle fill: Steve's method versus MapTriangle by bplus started 2018-06-22"`

'QB64 version 2017 1106/82 (the day before they switched to version 1.2)

'steve's method wins easily

CONST xmax = 800

CONST ymax = 600

SCREEN _NEWIMAGE(xmax, ymax, 32)

_SCREENMOVE 360, 60

start## = TIMER

'this is 10 X 10 X 10 runs on circle with different colors

FOR r = 246 TO 255

FOR g = 246 TO 255

FOR b = 1 TO 10

'fpcir xmax / 2, ymax / 2, 300, _RGB32(r, g, b)

fcirc xmax / 2, ymax / 2, 300, _RGB32(r, g, b)

NEXT

NEXT

NEXT

COLOR _RGB32(255, 255, 255)

PRINT TIMER - start##

SUB fpcir (xOrigin AS LONG, yOrigin AS LONG, radius AS LONG, K AS _UNSIGNED LONG)

a& = _NEWIMAGE(1, 1, 32)

_DEST a&

PSET (0, 0), K

_DEST 0

DIM x1 AS LONG, y1 AS LONG, x2 AS LONG, y2 AS LONG, i AS INTEGER

DIM polyAngle AS SINGLE

polyAngle = _PI(2) / 60

x1 = xOrigin + radius * COS(polyAngle)

y1 = yOrigin + radius * SIN(polyAngle)

FOR i = 2 TO 61

x2 = xOrigin + radius * COS(i * polyAngle)

y2 = yOrigin + radius * SIN(i * polyAngle)

_MAPTRIANGLE (0, 0)-(0, 0)-(0, 0), a& TO(xOrigin, yOrigin)-(x1, y1)-(x2, y2), 0

x1 = x2: y1 = y2

NEXT

_FREEIMAGE a& '<<< this is important!

END SUB

SUB fcirc (CX AS LONG, CY AS LONG, R AS LONG, K AS _UNSIGNED LONG)

DIM subRadius AS LONG, RadiusError AS LONG

DIM X AS LONG, Y AS LONG

subRadius = ABS(R)

RadiusError = -subRadius

X = subRadius

Y = 0

IF subRadius = 0 THEN PSET (CX, CY): EXIT SUB

' Draw the middle span here so we don't draw it twice in the main loop,

' which would be a problem with blending turned on.

LINE (CX - X, CY)-(CX + X, CY), K, BF

WHILE X > Y

RadiusError = RadiusError + Y * 2 + 1

IF RadiusError >= 0 THEN

IF X <> Y + 1 THEN

LINE (CX - Y, CY - X)-(CX + Y, CY - X), K, BF

LINE (CX - Y, CY + X)-(CX + Y, CY + X), K, BF

END IF

X = X - 1

RadiusError = RadiusError - X * 2

END IF

Y = Y + 1

LINE (CX - X, CY - Y)-(CX + X, CY - Y), K, BF

LINE (CX - X, CY + Y)-(CX + X, CY + Y), K, BF

WEND

END SUB

Might use codeguy's "mini step" to adjust number of triangles to take according to size of (near) circle. Here I just tested a large "circle" polygon with 60 sides for speed.