Hi @frederik,
I am running macOS version 10.14.6 and the simplified script works perfectly fine on my machine as well.
As I was trying to extend it I got the same output again and I did some trial and error.
What am I trying to achieve?
I have in mind a setup where I draw an ImageObject. The ImageObject then can contain text or graphics as well as another image. I then feed it into some arbitrary function to manipulate it.
The clue is that I want to manipulate the manipulated image again. So I am currently returning a new ImageObeject from the manipulation function.
I came up with something like this:
w = h = 300
# higher Numbers here result in the context leak
numManipulations = 20
def manipulateImage(img, r, angle, pos):
    tempImg = ImageObject()
    x, y = pos
    with tempImg:
        size(w, h)
        # Draw the old Image
        image(img, (0, 0))
        fill(None)
        stroke(0)
        # Draw the manipulation on top
        oval(x - r, y - r, r * 2, r * 2)
        clipPath()
        rotate(angle, center = (x, y))
        image(img, (0, 0))
        
    return(tempImg)
im = ImageObject()
with im:
    size(w, h)
    fill(1)
    rect(0, 0, w, h)
    fill(0)
    fontSize(100)
    text("Heee", (10, 10))
for a in range(numManipulations):
    r = randint(20, 40)
    x = randint(r, w-r)
    y = randint(r, h-r)
    angle = randint(0, 360)
    im = manipulateImage(im, r, angle, (x, y))
    
    newPage(w, h)
    image(im, (0, 0))
    saveImage(f"~/Desktop/test/RotatingImage-{a}.png")    
    
What I found out so far:
- 
The scripts runs fine when you only save the final image.
Nope, running 100 repetitions results in the same Context leak 
 
- 
When I am trying to save every step for animation purpose or so I will get Context leak deteced, msgtracer -1. No matter using gif, mp4 or png for later stitching.
With png it usually starts at around 12 repetitions, mp4 or gif can go up to 100 repetitions, but I guess it depends on the resolution and other factors.
 
- 
Running the script within the app you see no problem except on a lot of repetitions the app freezes at some point and you need to kill it. Running the same script then in Terminal you see the Context leak deteced, msgtracer -1.
 
Maybe it is not the best setup for what I have in mind, but I hope one can understand what's happening.
Any input for improvment is much appreciated as well. 