         # update children which were added:
         #   remove from old parent
         #   update parent
-        for child in newChildren when (oldParent = child.getPendingParent()) != @
-          oldParent?._setChildrenOnly oldParent.pendingChildrenWithout child
-          child._setParentOnly @
+        for child in newChildren
+          if child.getIsFilter()
+            (@_filterChildren ||= []).push child
+          if (oldParent = child.getPendingParent()) != @
+            oldParent?._setChildrenOnly oldParent.pendingChildrenWithout child
+            child._setParentOnly @
+
+        @_filterChildren ||= noChildren
 
         newChildren
 

        p

    children:
      default: initialChildren = []
      setter: (newChildren, oldChildren) ->
        @__drawPropertiesChanged = true # TODO - this is a hack-fix; is this the right way to do this?
        newChildren = compactFlatten newChildren, keepIfRubyTrue
        firstTimeSettingChildren = oldChildren == initialChildren

        # detect childrenHaveRemovedAnimations
        for child in oldChildren when child.getPendingHasToVoidAnimators()

      opacity

    isChanging: -> @__stateChangeQueued
    isFilter:      -> false
    # filterSource:  -> @_filterSource || @_parent
    rootElement:   -> @_rootElement ||= if @_parent then @_parent.getRootElement() else @
    bitmapFactory: -> @_bitmapFactory || @getCanvasElement()?.bitmapFactory || Canvas.Bitmap
