So I believe I have finally solved this.
I recently switched over to wireless printing using OctoPrint on a Raspberry Pi (OctoPi). So now I just plate in Slic3r and upload the g-code to OctoPrint. I still had the same issue where prints were offset more towards the front of the bed.
I came up with two fixes. Here is the first that I have tested:
The Workbench Apprentice (and probably other Solidoodle printers) have a travel range that is past the origin of the bed. X0 Y0 positions the extruder off of the bed, but I found that X0 Y14 positions it pretty close to being right on the corner. So what I did was set some custom start g-code in slicer to move the head to X0 Y14 and then reset that position as X0 Y0. Here is my full start g-code for reference:
T0; T is the platform to heat
M140 S[first_layer_bed_temperature]; set bed temp (fast)
M104 S150; set extruder temp (fast)
G21; set units to mm
G90; set to absolute positioning
G28 X0 Y0; home x and y axes
G1 Z20 F200; lower bed for clearance
G1 X0 Y14 F5000; move to front left corner
G92 X0 Y0; set correct bed origin
G29; detailed z-probe
G92 E0; reset extrusion distance
G1 Z0.3 F200; auto raise z-probe
G1 Z20 F200; lower bed for clearance
G1 X0 Y0 F5000; move to front left corner
M190 S[first_layer_bed_temperature]; wait for bed to reach target temp
M109 S[first_layer_temperature]; wait for extruder to reach target temp
G1 X75 Y75 F5000; move to center
Here is my second solution that is untested:
In the Slic3r setting for printer bed shape, it lists the size and origin. Originally I had the size set to 150x150 and the origin as 0,0. I believe that the bed size should actually be set to the full range of travel for your printer, and the origin should be where the corner of the bed starts from the actual origin. So in my case, the size would be x: 170 y: 160, and the origin would be x: 0 y: 14.
Solidoodle Workbench Apprentice
M5 replacement z-axis rod, PEI bed