Exponentially Slimy Programming: Stacking Minecraft Slimes Slimes are cube shaped enemies in Minecraft that break into multiple smaller versions of themselves when killed. For the purposes of this challenge we'll depict them as an 8×8 pixel image with 3 colors:

 ← True 8×8 version.
The precise RGB colors are:

0, 0, 0 for the eyes and mouth
110, 170, 90 for the central, darker green
116, 196, 96 for the outer, lighter green

Challenge
Write a program or function that takes in a positive integer N and outputs an image of N sizes of slimes packed into a rectangle. Going from left to right, the image should follow the pattern of having:

A stack of 2(N-1) 8×8 slimes.
A stack of 2(N-2) 16×16 slimes.
A stack of 2(N-3) 32×32 slimes.
And so on until the stack only contains one slime.

The slime images larger than the 8×8 version () are generated by nearest-neighbor upsampling (i.e. just doubling all the pixels). Note that you must use the exact slime design and colors given here.
The final image will contain 2N-1 slimes and be 2(N+3)-8 pixels wide and 2(N+2) pixels tall.
The image may be output in any common image file format, saved to a file or printed/returned as a raw data stream, or directly displayed during runtime.
The shortest code in bytes wins.
Examples
Your program should produce these exact results.
N = 1:

N = 2:

N = 3:

N = 4:

N = 5:

N = 6:

Larger N should work just as well.
MATL, 77 76 74 bytes
:&quot;')^.,9&amp;Xze`}+.E=p'F3ZaQ8e@qWt3$Y&quot;G@-W1X&quot;]&amp;h[OOO;11 17E]5*29 7U24hhE&amp;vEYG

The code works in this commit, which is earlier than the challenge.
You can try it in MATL online. This interpreter is still experimental. If it doesn't work, try refreshing the page and pressing &quot;Run&quot; again.
Here's an example run in the offline interpreter:

Explanation
:                     % Input N implicitly. Generate range [1 2 ... N]
&quot;                     % For each k in [1 2 ... N]
  ')^.,9&amp;Xze`}+.E=p'  %   Compressed string
  F3Za                %   Decompress with target alphabet [0 1 2]
  Q                   %   Add 1
  8e                  %   Reshape into 8×8 array containing values 1, 2, 3
  @qW                 %   Push 2 raised to k-1
  t                   %   Duplicate
  3$Y&quot;                %   Repelem: interpolate image by factor 2 raised to k-1
  G@-W                %   Push 2 raised to N-k
  1X&quot;                 %   Repmat: repeat the array vertically. Gives a vertical strip
                      %   of repeated subimages
]                     % End for each
&amp;h                    % Concatenate all vertical strips horizontally. This gives a big
                      % 2D array containing 1, 2, 3, which represent the three colors
[OOO;11 17E]5*        % Push array [0 0 0; 11 17 9] and multiply by 5
29 7U24hhE            % Push array [29 49 24] and multiply by 2
&amp;vE                   % Concatenate the two arrays vertically and multiply by 2.
                      % This gives the colormap [0 0 0; 110 170 90; 116 196 96]
YG                    % Take the array and the colormap and display as an image