Well, it might be a little late, but if anyone comes across the same problem:
----------------------------------------------------------------------------------------- -- -- main.lua -- -- Example on how to fill combined objects using snapshots -- 2017-08-27 -- ----------------------------------------------------------------------------------------- local color1 = {0.17,0.1,0.24} local color2 = {0.57,0.5,0.54} local gradient = { type="gradient", color1=color1, color2=color2, direction="up"} -- create a background local bg = display.newRect( display.contentCenterX, display.contentCenterY, display.actualContentWidth, display.actualContentHeight ) bg.fill = { 0.5, 0.7, 0.9, 1} -- create empty snapshot local snap = display.newSnapshot(40,100) -- create objects local filler = display.newRect(0,30,40,100) -- set this to the size of your snapshot to cover all objects. filler.fill = gradient filler.alpha = 0 -- this is for the tint() function. set to 1 under normal conditions filler.blendMode = "srcIn" -- this is way to drop a texture (gradient here) on multiple objects local circle = display.newCircle ( 0, 0, 20 ) circle.fill={1,0,0,1} local rectangle = display.newRect ( 0, 40, 40, 80 ) rectangle.fill = {0,1,0,1} snap.group:insert(rectangle) snap.group:insert(circle) snap.group:insert(filler) -- last in to be top-most -- just for fun. tinting and transitioning is not required for the gradient effect function tint() filler.alpha = 1 snap:invalidate() end transition.to(snap,{time=1500, alpha=1, x=display.contentCenterX, y=display.contentCenterY, onComplete=tint})