         @renderRasterThangType(thangType, builder)
         
     if async
-      builder.buildAsync()
+      try
+        builder.buildAsync()
+      catch e
+        @resolutionFactor *= 0.9
+        return @_renderNewSpriteSheet(async)
       builder.on 'complete', @onBuildSpriteSheetComplete, @, true, builder
+      @asyncBuilder = builder
     else
       sheet = builder.build()
       @onBuildSpriteSheetComplete({async:async}, builder)

      
  onBuildSpriteSheetComplete: (e, builder) ->
    return if @initializing
    
    if builder.spriteSheet._images.length > 1
      @resolutionFactor *= 0.9
      console.debug('Sprite sheet is too large... re-rendering at', @resolutionFactor.toFixed(2))
      @_renderNewSpriteSheet(e.async)
      return
    

    @_renderNewSpriteSheet()
    
  _renderNewSpriteSheet: (async) ->
    @asyncBuilder.stopAsync() if @asyncBuilder
      
    async ?= @buildAsync
    builder = new createjs.SpriteSheetBuilder()
    groups = _.groupBy(@toRenderBundles, ((bundle) -> @renderGroupingKey(bundle.thangType, '', bundle.colorConfig)), @)
