2D matrix issue

I have 20 icicle LEDs (16 LEDs each) hanging in a row and I am trying to run them as a single panel, 20x16 matrix. The issue is that I get strange results. At first it looks ok. All 320 LEDs light up with solid color and Peek shows a 20x16 array fully populated. However, when I change to 2D effects things get messed up. Peek shows 16x16 pixels with 2 columns on either side black. Looking at the LEDs, all columns are active except that there are groups of 4 on some columns that are always off. Reboot or power cycle does not change anything.
Using latest version 0.14.0-b3

If you want meaningful help, post your exact set up (wiring) and WLED configuration.

What does wiring have to do with this? This is some sort of software bug.
Since you didn’t ask for anything specific, I am giving the full data dump.

If I change the 2D setup to 16x20, the software works as expected. Peek shows 16 columns, of 20 pixels. Of course the pattern is all messed up.
5V LEDs
ESP32 using pin#2
Level shifter chip to convert 3.3 to 5V
12V power supply at wall outlet then 12V to 5V DC-DC converter.
5V injected at first and last column
Note that my current config is for 16x16, first 2 columns are disconnected since this is what works.
Not serpentine
Copy/paste from web GUI:
LED & Hardware setup
Total LEDs: 256
Recommended power supply for brightest white:
5V 22A supply connected to LEDs
(for most effects, ~8A is enough)

Enable automatic brightness limiter:
Maximum Current:
6000
mA
Automatically limits brightness to stay close to the limit.
Keep at <1A if powering LEDs directly from the ESP 5V pin!
If you are using an external power supply, enter its rating.
(Current estimated usage: 3380mA)

LED voltage (Max. current for a single LED):

Custom

Custom max. current per LED:
85
mA
Keep at default if you are unsure about your type of LEDs.
Hardware setup
LED outputs:
1:
WS281x

Color Order:
GRB
Start:
0
Length:
256

GPIO:
2

Reversed (rotated 180°):
Skip first LEDs:
0

Off Refresh:
+
LED Memory Usage: 1536 / 64000 B

Make a segment for each output:
Custom bus start indices:
Use global LED buffer:
Color Order Override:
+
Button 0 GPIO:
0

Pushbutton

Button 1 GPIO:
unused

Disabled

Button 2 GPIO:
unused

Disabled

Button 3 GPIO:
unused

Disabled

Disable internal pull-up/down:
Touch threshold:
32

IR GPIO:
unused

Remote disabled

Apply IR change to main segment only:
IR info
Relay GPIO:
unused
Invert ✕
Defaults
Turn LEDs on after power up/reset:
Default brightness:
128
(0-255)

Apply preset
1
at boot (0 uses defaults)

Use Gamma correction for color: (strongly recommended)
Use Gamma correction for brightness: (not recommended)
Use Gamma value:
2.8

Brightness factor:
100
%
Transitions
Crossfade:
Transition Time:
700
ms
Enable Palette transitions:
Random Cycle Palette Time:
5
s
Timed light
Default Duration:
60
min
Default Target brightness:
0

Mode:
Fade
White management
White Balance correction:
Advanced
Palette blending:
Linear (wrap if moving)

Target refresh rate:
42
FPS
Config template: No file chosenApply
2D setup:
Panel set-up
Number of panels:
1

A matrix is made of 1 or more physical LED panels.
Each panel can be of different size and/or have different LED orientation and/or starting point and/or layout.
LED panel layout
Panel 0
1st LED:
Top

Left

Orientation:
Horizontal

Serpentine:
Dimensions (WxH):
16
x
16

Offset X:
0
Y:
0

(offset from top-left corner in # LEDs)
Matrix Dimensions (W*H=LC): 16 x 16 = 256

Incorrect setting regarding wiring: serpentine, top, bottom, left, right, etc. will provide inconsistent/incorrect result.
For the easiest test if settings are entered correctly you can select Scrolling text effect which, if everything is set up correctly, will display current time and date on the LEDs in a scrolling fashion.

Until you see correct output with Scrolling text none of the effects will look as intended.

And, BTW, instead of copy/paste form web GUI I would much rather see cfg.json where exact configuration is stored.
You can find information on how to obtain cfg.json elsewhere on the forum. One would be backup functionality in Security settings.

If your LED set-up consists of 20 strips of 16 LEDs then your 2D set-up should reflect that.

As I said, with 16x16 everything works correctly. If I change to 20x16, several things go wrong.
The peek display shows 20x16 at first. After changing 2D setup, default is solid pattern which shows 20x16 in peek and all pixels are on. Then, when I select a 2D pattern, peek changes to 16x16 with 2 black columns on each side. I can accept that actual pixels could be messed up due to configuration issues but It makes no sense that the peek function does not reflect the setup. Are some 2D effects restricted to 16x16? Or maybe restricted to a square array?
Running the effect results in actual pixels display below where O = illuminated and X = always dark.
XOOOOOOOXOXOOOOOOOXO
XOOOOOOOXOXOOOOOOOXO
XOOOOOOOXOXOOOOOOOXO
XOOOOOOOXOXOOOOOOOXO
OXOOOOOXOOOXOOOOOXOO
OXOOOOOXOOOXOOOOOXOO
OXOOOOOXOOOXOOOOOXOO
OXOOOOOXOOOXOOOOOXOO
OOXOOOXOOOOOXOOOXOOO
OOXOOOXOOOOOXOOOXOOO
OOXOOOXOOOOOXOOOXOOO
OOXOOOXOOOOOXOOOXOOO
OOOXOXOOOOOOOXOXOOOO
OOOXOXOOOOOOOXOXOOOO
OOOXOXOOOOOOOXOXOOOO
OOOXOXOOOOOOOXOXOOOO

Too much writing , take screen pics of your setup and listen to the man