Even if you are using lots of sprites, there are still ways to optimize them.
First, read these tutorials:
https://www.construct.net/au/blogs/cons ... memory-796
https://www.scirra.com/manual/134/performance-tips
https://www.construct.net/au/blogs/ashl ... -works-917
Try to make images (in sprites) as small as possible. Don't create big sprites and then scale them down on the layout.
Don't create sprites with many animations.
If you only need pine trees on this layout, a sprite containing 20 different animations for all kinds of trees will consume a lot of memory.
If you have huge layouts with thousands of background sprites, try to build a system where sprites are created as you progress through the level and destroyed when they are no longer needed.
Or at least disable animations/events/behaviors for sprites that are off-screen.
Avoid using effects and behaviors on too many sprites.
Regarding the issue with the TargetScale - you can do something like this:
Every 1 second:
Tree compare instance variable TargetScale<1 -> Add 0.1 to TargetScale
-> Tree set scale to TargetScale[/code:vut6cbur]
Trees that have reached scale 1 will no longer be picked by this event.